如何使用WCF跟踪查看器查看在线路上发送的原始SOAP信息?

时间:2015-08-13 12:29:53

标签: .net wcf logging soap fiddler

我正在对soap WCF消息的邮件加密进行故障排除。

使用Fiddler,我可以在SOAP正文中看到原始消息,包括CipherData / CipherValue XML元素。

我已使用以下配置配置了消息记录:

<diagnostics wmiProviderEnabled="true">
  <messageLogging
       logEntireMessage="true"
       logMalformedMessages="true"
       logMessagesAtServiceLevel="true"
       logMessagesAtTransportLevel="true"
       maxMessagesToLog="3000"
       maxSizeOfMessageToLog="100000"/>
</diagnostics>

现在,当我打开生成的日志XML文件时,我只能看到未加密的SOAP消息,无法找到CipherData / CipherValue元素。

看起来WCF日志记录是在堆栈中尚未加密消息的位置完成的。

有没有办法配置WCF日志记录,以便我可以在加密后看到消息?

BTW,我想在WCF跟踪文件中看到消息的加密版本的原因是我无法使用Fiddler对生产环境进行故障排除。

2 个答案:

答案 0 :(得分:4)

WCF对加密进行解码以使其具有人类可读性,我不知道WFC是否可以配置为不进行解密,但是如果您使用Wireshark,您将看到因为它使用Winpcap而将在线路上发生什么。

您需要下载并安装Winpcap,然后安装WireShark。它会为你做的工作但是 如果您需要更多地控制在线传输的内容,这里是一个使用WinPcap来嗅探线包的完整示例。

http://www.binarytides.com/code-packet-sniffer-c-winpcap/

答案 1 :(得分:0)

您可能希望将IDispatchMessageInspector的BeforeSendReply连接起来并在那里记录消息,这是消息进入网络之前的最后一点,不确定但此时消息应该加密,更多here < / p>

如果代码更改不是一个选项,那么wireshark是你最好的选择,但通常infra的人不愿意将这样的软件放在生产服务器上。