请不要回答使用WCF跟踪工具除非明确指示如何捕获实际邮件,包括邮件头和错误。这link不起作用。如何正确记录从WCF客户端发送和接收的邮件
而且,不回答IClientMessageInspector
除非你知道如何得到它包括所有头(它不),并具有不解析故障元素捕获响应。
使用pre-wcf网络服务,您可以编写完美工作的SoapExtension
。
请不要回答使用WCF跟踪工具除非明确指示如何捕获实际邮件,包括邮件头和错误。这link不起作用。如何正确记录从WCF客户端发送和接收的邮件
而且,不回答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>
这不是理想的,因为你必须使用一个工具来查看邮件,但它似乎与所有页眉和故障来获得实际的消息等
我试过它的解决方案,但它不包含标题。 – korvinko
实现IEndpointBehavior的类允许您捕获并记录入站/出站消息。
您还需要实施IDispatchMessageInspector
一类我得给这个稍后再试。我真的很想直接用人类可读的格式登录到我们现有的日志中。 – JohnOpincar
您需要wcf日志记录,而不是wcf跟踪。看到这里http://msdn.microsoft.com/en-us/library/ms730064.aspx然后,而不是System.Diagnostics.XmlWriterTraceListener把自己的类,它实现的接口。虽然我自己并没有完成 –
我终于做到了这一点 - WCF的不完整和痛苦的另一个例子。 – JohnOpincar