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

标签 .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 日志记录,以便我可以在加密后查看消息?

顺便说一句,我之所以想在 WCF 跟踪文件中查看消息的加密版本,是因为我无法使用 Fiddler 在生产环境中进行故障排除。

最佳答案

像这样设置您的system.diagnostics配置。

<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.Net" tracemode="includehex" maxdatasize="1024">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.Sockets">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="System.Net" value="Verbose"/>
      <add name="System.Net.Sockets" value="Verbose"/>
    </switches>
    <sharedListeners>
      <add name="System.Net" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log"/>
    </sharedListeners>
    <trace autoflush="true"/>
  </system.diagnostics>
</configuration>

这应该会给你更多细节。欲了解更多信息,请参阅this

关于.net - 如何使用 WCF 跟踪查看器查看在线发送的原始 SOAP 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988310/

相关文章:

.net - 如何从A-Z到.net项目的日常构建?

c# - 通过 GUI 访问 Windows 服务的最佳方式

使用 Microsoft.Extensions.Logging 从静态成员进行日志记录

c# - 基于 log4net 中构建配置的不同附加程序

node.js - Cat 显示日志中没有任何内容( express 服务器)

c# - 运算符==在基础中和在派生中等于

.net - 金融市场开发商困境

.net - 在 Compact Framework 中获取文件版本信息

linux - MONO WCF 自托管服务对在使用 net.tcp 时由对等方重置连接

wcf - WCF 服务(托管在 IIS 中)出现 20 个并发请求的性能问题