请不要使用 WCF跟踪工具回答,除非提供有关如何捕获实际消息(包括标头和错误)的明确说明。此link不起作用。
另外,请不要回答IClientMessageInspector
,除非您知道如何让它包含所有标题(它不)并捕获具有无法解析的错误元素的响应。
使用pre-wcf Web服务,您可以编写一个完美无缺的SoapExtension
。
答案 0 :(得分:4)
写一个custom message encoder。它可以访问所有标题。关于你希望你的解决方案如何通用的deoending你可能需要写它,以便它在真正的编码器中得到。
就在几天前,我在this thread中实现了一个“Wrapper编码器”。那个编码器改变了消息。你不需要这样做,你可以记录它并将其传递给传输,就像我一样。
答案 1 :(得分:2)
实现IEndpointBehavior的类允许您捕获和记录入站/出站消息。
您还需要一个实现IDispatchMessageInspector
的类答案 2 :(得分:1)
我也找到了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>
这不理想,因为你必须使用工具来查看消息,但它似乎捕获了包含所有标题和错误的实际消息等。