我正在调试 WCF SOAP 客户端。我可以修改客户端,但对服务器没有任何控制权。我想检查发送和接收的实际消息,以找出在客户端发送时在 SoapUI 中工作的消息失败的原因。
通信是通过 SSL 进行的,因此我无法使用 Wireshark 检查线路上的消息。
我已启用 wcf 跟踪(使用logEntireMessage="true"
),但是虽然记录了大量数据,但似乎并未记录实际的响应负载。它... stream ...
在跟踪查看器中仅显示为“ ”。此外,我似乎无法在跟踪中找到传出消息的 HTTP 标头。
有人知道如何更接近检查实际消息吗?
编辑:提琴手帮我找到了问题。(这是有效载荷中的 UTF-8 字节顺序标记,服务器不喜欢。)另一方面,WFC 跟踪太“高级”,无法发现此类问题,据我所知。
一种选择是使用 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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1817 次 |
最近记录: |