我有一个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
尺寸可能不是真正的问题,但这是我唯一能想到的。真实的消息由第三方发送,我无法访问他们的系统,也不知道他们使用什么来发送消息。但是我们的应用程序成功接收并处理了这些消息,因此他们确实完成了这些消息。
任何指针/想法都将不胜感激!
答案 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>