检查WCF SOAP消息有效负载

时间:2013-08-19 17:10:44

标签: wcf soap

我正在调试WCF SOAP客户端。我可以修改客户端,但不能控制服务器。我想检查发送和接收的实际消息,以便找出在客户端发送时SoapUI中有效的消息失败的原因。

通信是通过SSL进行的,因此我无法使用Wireshark检查线路上的消息。

我启用了wcf跟踪(使用logEntireMessage="true"),但是在记录大量数据时,似乎没有记录实际的响应有效负载。它在Trace Viewer中显示为“... stream ...”。此外,我似乎无法在跟踪中找到传出消息的HTTP标头。

任何人都知道如何更接近检查实际的消息?

编辑:Fiddler帮我找到了问题。 (这是有效载荷中的UTF-8字节顺序标记,服务器不喜欢。)另一方面,WFC跟踪对于找到这种问题太过“高级”,据我所知。 / p>

1 个答案:

答案 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>