2010-05-10 8 views
9

This question scheint ganz in der Nähe was ich suche - ich konnte Tracing einrichten und ich schaue auf die Protokolleinträge für meine Anrufe an den Dienst .So fangen Sie rohe Seife Anfrage/Antwort (Daten) von WCF Client

Allerdings muss ich die rohe Soap-Anfrage mit den Daten sehen, die ich an den Dienst sende und sehe keine Möglichkeit, dies von der SvcTraceViewer tun (nur Protokolleinträge werden angezeigt, aber keine Daten an den Dienst gesendet) - bin ich nur fehlende Konfiguration?

Hier ist, was ich in meinem web.config bekam:

<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> 

Jede Hilfe dankbar!

UPDATE: Das ist alles, was ich in meiner Spur sehen:

<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> 

Antwort

11

Sie haben keine bestimmte Registerkarte, die nur die SOAP-Nachricht zeigt - aber die XML-Registerkarte funktioniert die ganze SOAP-Nachricht enthalten - Nein??

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

Was aus diesem Schnipsel von XML für Sie fehlt hier ??

UPDATE: John, du bist leider nicht zeigen, was Ihre <system.serviceModel>/<diagnostics> Abschnitt aussieht - Mine für dieses Ergebnis verwendet sieht wie folgt aus:

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

Haben Sie die gleichen Einstellungen haben? Vielleicht vermisst du logEntireMessage oder etwas anderes ??

+0

tnx zum Helfen - aktualisierte Frage zu zeigen, was ich in der XML sehe. Es gibt keinen Umschlag! Fehle ich etwas aus der Konfig? – JohnIdol

+0

Auch ich habe anscheinend eine andere Version von Svctraceviewer - die Nachricht Tab neben dem Xml Tab wird nicht angezeigt – JohnIdol

+0

@JohnIdol: welche Bindung verwenden Sie ?? –

11

Ich habe vor kurzem das gleiche Problem wie in der Aktualisierung der ursprünglichen Frage festgestellt: Die Ablaufverfolgung zeigte, dass eine Nachricht gesendet worden war, aber die Nachricht selbst war nicht da. Die Fehlerbehebung bestand darin, eine System.ServiceModel.MessageLogging-Quelle hinzuzufügen. Hier ist mein system.diagnostics Config-Abschnitt:

<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> 

Und mein system.serviceModel/Abschnitt Diagnose:

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

Sobald ich die MessageLogging Quelle fügte hinzu, die TraceViewer zeigte "Message Log Trace" Spuren, die die darin enthaltenen aktuelle SOAP-Nachrichten.

Verwandte Themen