我正在对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对生产环境进行故障排除。答案 0 :(得分:4)
WCF对加密进行解码以使其具有人类可读性,我不知道WFC是否可以配置为不进行解密,但是如果您使用Wireshark,您将看到因为它使用Winpcap而将在线路上发生什么。
您需要下载并安装Winpcap,然后安装WireShark。它会为你做的工作但是 如果您需要更多地控制在线传输的内容,这里是一个使用WinPcap来嗅探线包的完整示例。
答案 1 :(得分:0)
您可能希望将IDispatchMessageInspector的BeforeSendReply连接起来并在那里记录消息,这是消息进入网络之前的最后一点,不确定但此时消息应该加密,更多here < / p>
如果代码更改不是一个选项,那么wireshark是你最好的选择,但通常infra的人不愿意将这样的软件放在生产服务器上。