1

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

通信是通过 SSL 进行的,所以我不能使用 Wireshark 来检查线路上的消息。

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

有人知道如何更接近检查实际消息吗?

编辑:提琴手帮我找到了问题。(这是负载中的 UTF-8 字节顺序标记,服务器不喜欢。)另一方面,WFC 跟踪太“高级”,无法找到此类问题,据我所知。

4

1 回答 1

5

一种选择是使用 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>
于 2013-08-19T17:16:04.697 回答