WCF XmlWriterTraceListener不记录消息

时间:2018-02-09 09:52:26

标签: wcf iis logging soap

我有一个IIS应用程序来托管SOAP端点,我试图将日志记录添加到调试目的。执行和处理调用,但消息内容有问题。我需要在完成任何处理之前验证内容。

我找到了web.config文件并添加了日志记录,如下所示

<system.serviceModel>
  <diagnostics performanceCounters="ServiceOnly">  
    <messageLogging   
         logEntireMessage="true"   
         logMalformedMessages="true"  
         logMessagesAtServiceLevel="true"   
         logMessagesAtTransportLevel="false"  
         maxMessagesToLog="300000"  
         maxSizeOfMessageToLog="65535000"/>  
  </diagnostics>  
</system.serviceModel>

<system.diagnostics>
  <sources>        
    <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
      <listeners>
        <add name="MyCustomLogging"  
             type="System.Diagnostics.XmlWriterTraceListener"  
             initializeData="C:\Temp\MyCustomLogging.svclog" />  
      </listeners>
    </source>
  </sources>
</system.diagnostics>

当我使用较小的消息(&lt; 2 KB) - screenshot from Service Trace Viewer

测试时,日志记录工作正常

但是当触发真正的集成时,发送的消息要大得多,大约250KB。那些没有记录。我只是在跟踪中得到一个空的MessageLogTraceRecord元素 - screenshot from Service Trace Viewer

尺寸可能不是真正的问题,但这是我唯一能想到的。真实的消息由第三方发送,我无法访问他们的系统,也不知道他们使用什么来发送消息。但是我们的应用程序成功接收并处理了这些消息,因此他们确实完成了这些消息。

任何指针/想法都将不胜感激!

1 个答案:

答案 0 :(得分:0)

找到答案。 我需要添加

<endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true" />
诊断标记中的

,在messageLogging标记下面,如下所示

<diagnostics performanceCounters="ServiceOnly">  
    <messageLogging   
         logEntireMessage="true"   
         logMalformedMessages="true"  
         logMessagesAtServiceLevel="true"   
         logMessagesAtTransportLevel="true"  
         maxMessagesToLog="300000"  
         maxSizeOfMessageToLog="65535000"/>  
    <endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true" />
  </diagnostics>