Reputation: 42689
I am debugging a WCF SOAP client. I can modify the client, but don't have any control over the server. I would like to inspect the actual messages sent and received in order to find out why a message which works in SoapUI fails when sent by the client.
The communication is over SSL, so I can't use Wireshark to inspect the messages on the wire.
I have enabled wcf tracing (with logEntireMessage="true"
), but while an enormous amount of data is logged, the actual response payload does not seem to be logged. It is just shown as "... stream ...
" in Trace Viewer. Also I cant seem to find the HTTP headers for the outgoing message in the trace.
Anybody have an idea how to get closer to inspecting the actual messages?
Edit: Fiddler helped me find the problem. (It was a UTF-8 byte order mark in the payload, that the server didn't like.) WFC tracing on the other hand is too "high level" to find this kind of problem, as far as I can tell.
Upvotes: 1
Views: 2178
Reputation: 24426
One option is to use Fiddler. Another option is WCF logging (as you said), make sure you mark to log at both transport and message level. Here's what works for me:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
Upvotes: 6