【发布时间】:2012-05-29 02:10:50
【问题描述】:
请不要使用 WCF 跟踪工具 回答,除非明确说明如何捕获实际消息,包括标题和错误。这个link 不起作用。
另外,不要回答IClientMessageInspector,除非您知道如何让它包含所有标题(它没有)并捕获具有无法解析的错误元素的响应。
使用 pre-wcf 网络服务,您可以编写一个完美运行的 SoapExtension。
【问题讨论】:
请不要使用 WCF 跟踪工具 回答,除非明确说明如何捕获实际消息,包括标题和错误。这个link 不起作用。
另外,不要回答IClientMessageInspector,除非您知道如何让它包含所有标题(它没有)并捕获具有无法解析的错误元素的响应。
使用 pre-wcf 网络服务,您可以编写一个完美运行的 SoapExtension。
【问题讨论】:
写一个custom message encoder。它可以访问所有标题。关于您希望解决方案的通用性如何,您可能需要编写它以使其进入真正的编码器。
就在几天前,我在this thread 中实现了一个“包装编码器”。该编码器更改了消息。你不需要这样做,你可以像我一样记录它并将它传递给传输。
【讨论】:
我也找到了this:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\wcfMessages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="1000000"
maxSizeOfMessageToLog="10000000"/>
</diagnostics>
</system.serviceModel>
这并不理想,因为您必须使用工具来查看消息,但它似乎确实可以捕获包含所有标题和错误等的实际消息。
【讨论】:
实现 IEndpointBehavior 的类允许您捕获和记录入站/出站消息。
您还需要一个实现 IDispatchMessageInspector 的类
【讨论】: