2010-05-10 132 views
9

This question似乎非常接近我所寻找的 - 我能够设置跟踪,我正在查看我的服务调用的日志条目。如何拦截来自WCF客户端的原始SOAP请求/响应(数据)

然而,我需要看到原始SOAP请求与我发送到服务的数据,我看不到从SvcTraceViewer做到这一点(只有日志条目显示,但没有数据发送到服务) - 是我只是缺少配置?

这是我在我的web.config有:

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Verbose" 
       propagateActivity="true"> 
     <listeners> 
      <add name="sdt" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="App_Data/Logs/WCFTrace.svclog" /> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 

任何帮助表示赞赏!

UPDATE:这是我在我的跟踪看:

<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> 
    <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"> 
    <EventID>262163</EventID> 
    <Type>3</Type> 
    <SubType Name="Information">0</SubType> 
    <Level>8</Level> 
    <TimeCreated SystemTime="2010-05-10T13:10:46.6713553Z" /> 
    <Source Name="System.ServiceModel" /> 
    <Correlation ActivityID="{00000000-0000-0000-1501-0080000000f6}" /> 
    <Execution ProcessName="w3wp" ProcessID="3492" ThreadID="23" /> 
    <Channel /> 
    <Computer>MY_COMPUTER_NAME</Computer> 
    </System> 
<ApplicationData> 
    <TraceData> 
    <DataItem> 
     <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information"> 
     <TraceIdentifier>http://msdn.microsoft.com/en-US/library/System.ServiceModel.Channels.MessageSent.aspx</TraceIdentifier> 
      <Description>Sent a message over a channel.</Description> 
      <AppDomain>MY_DOMAIN</AppDomain> 
      <Source>System.ServiceModel.Channels.HttpOutput+WebRequestHttpOutput/50416815</Source> 
      <ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/MessageTraceRecord"> 
      <MessageProperties> 
       <Encoder>text/xml; charset=utf-8</Encoder> 
       <AllowOutputBatching>False</AllowOutputBatching> 
       <Via>http://xxx.xx.xxx.xxx:9080/MyWebService/myService</Via> 
      </MessageProperties> 
      <MessageHeaders></MessageHeaders> 
     </ExtendedData> 
     </TraceRecord> 
    </DataItem> 
    </TraceData> 
</ApplicationData> 

回答

11

你不必说却与此SOAP消息的特定标签 - 但XML标签不包括整个SOAP消息 - 没有??

alt text http://i39.tinypic.com/j67rf7.jpg

什么是从这个片段XML在这里对你的思念?

UPDATE:约翰,你是不幸的是没有显示你的<system.serviceModel>/<diagnostics>部分是什么样子 - 用于这个结果我的是这样的:

<diagnostics> 
    <messageLogging 
     logMessagesAtTransportLevel="true" 
     logMessagesAtServiceLevel="false" 
     logMalformedMessages="true" 
     logEntireMessage="true" 
     maxSizeOfMessageToLog="65535000" 
     maxMessagesToLog="500" /> 
</diagnostics> 

你有相同的设置?也许你错过了logEntireMessage或别的什么?

+0

tnx帮助 - 更新问题以显示我在xml中看到的内容。没有信封!我是否缺少配置文件? – JohnIdol 2010-05-10 13:21:27

+0

此外,我似乎有不同版本的svctraceviewer - xml选项卡旁边的消息选项卡不显示 – JohnIdol 2010-05-10 13:33:39

+0

@JohnIdol:您使用哪种绑定? – 2010-05-10 14:32:19

11

我最近遇到了与原始问题更新相同的问题:跟踪显示消息已发送,但消息本身不存在。对我来说,修复是添加一个System.ServiceModel.MessageLogging源。这里是我的System.Diagnostics程序配置部分:

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true" > 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xml" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="C:\logfiles\Traces.svclog" /> 
    </sharedListeners> 
</system.diagnostics> 

我的system.serviceModel /诊断部分:

<diagnostics> 
    <messageLogging 
     logMessagesAtTransportLevel="true" 
     logMessagesAtServiceLevel="true" 
     logMalformedMessages="true" 
     logEntireMessage="true" 
     maxSizeOfMessageToLog="65535000" 
     maxMessagesToLog="500" /> 
</diagnostics> 

一旦我添加了MessageLogging来源,TraceViewer显示含有“消息日志跟踪”痕迹实际的SOAP消息。

相关问题