我正在调试WCF SOAP客户端。我可以修改客户端,但不能控制服务器。我想检查发送和接收的实际消息,以便找出在客户端发送时SoapUI中有效的消息失败的原因。
通信是通过SSL进行的,因此我无法使用Wireshark检查线路上的消息。
我启用了wcf跟踪(使用logEntireMessage="true"
),但是在记录大量数据时,似乎没有记录实际的响应有效负载。它在Trace Viewer中显示为“... stream ...
”。此外,我似乎无法在跟踪中找到传出消息的HTTP标头。
任何人都知道如何更接近检查实际的消息?
编辑:Fiddler帮我找到了问题。 (这是有效载荷中的UTF-8字节顺序标记,服务器不喜欢。)另一方面,WFC跟踪对于找到这种问题太过“高级”,据我所知。 / p>
答案 0 :(得分:4)
一个选项是use Fiddler。另一种选择是WCF日志记录(正如您所说),请确保标记为在传输和消息级别进行日志记录。这对我有用:
<?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>