2012-05-22 26 views
7

请不要回答使用WCF跟踪工具除非明确指示如何捕获实际邮件,包括邮件头和错误。这link不起作用。如何正确记录从WCF客户端发送和接收的邮件

而且,不回答IClientMessageInspector除非你知道如何得到它包括所有头(它不),并具有不解析故障元素捕获响应。

使用pre-wcf网络服务,您可以编写完美工作的SoapExtension

回答

3

写一个custom message encoder。它可以访问所有标题。根据你想要你的解决方案的普通程度而定,你可能需要编写它,以便它可以在真正的编码器中得到。

就在几天前我在this thread中实现了一个“包装编码器”。该编码器改变了消息。你不需要这样做,你可以记录下来,并像我一样将它传递给交通工具。

+0

一类我得给这个稍后再试。我真的很想直接用人类可读的格式登录到我们现有的日志中。 – JohnOpincar

+0

您需要wcf日志记录,而不是wcf跟踪。看到这里http://msdn.microsoft.com/en-us/library/ms730064.aspx然后,而不是System.Diagnostics.XmlWriterTraceListener把自己的类,它实现的接口。虽然我自己并没有完成 –

+0

我终于做到了这一点 - WCF的不完整和痛苦的另一个例子。 – JohnOpincar

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> 

这不是理想的,因为你必须使用一个工具来查看邮件,但它似乎与所有页眉和故障来获得实际的消息等

+0

我试过它的解决方案,但它不包含标题。 – korvinko

相关问题