2010-05-10 13 views
9

This question parece ser bastante parecido a lo que estoy buscando - Pude configurar el rastreo y estoy mirando las entradas de registro para mis llamadas al servicio .Cómo interceptar solicitud/respuesta de jabón sin procesar (datos) del cliente de WCF

Sin embargo tengo que ver la solicitud de jabón sin procesar con los datos que estoy enviando al servicio y no veo ninguna manera de hacerlo desde el SvcTraceViewer (sólo registran las entradas se muestran pero no hay datos que enviar al servicio) - soy yo solo falta la configuración?

Aquí es lo que tengo en mi 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> 

Cualquier ayuda apreciada!

ACTUALIZACIÓN: esto es todo lo que veo en mi rastro:

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

Respuesta

11

Usted no tienen una ficha específica que muestra sólo el mensaje SOAP - pero la ficha XML sí incluye todo el mensaje SOAP - ¿¿no??

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

Lo que falta para que a partir de este fragmento de XML aquí ??

ACTUALIZACIÓN: John, estás por desgracia no mostrar lo que su sección <system.serviceModel>/<diagnostics> parece - la mina utilizado para este resultado se ve así:

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

¿Tiene la misma configuración? Tal vez te estás perdiendo logEntireMessage o algo más ??

+0

TNX por ayudar - pregunta actualiza para mostrar lo que veo en el xml. ¡No hay envolvente! ¿Me estoy perdiendo algo de la configuración? – JohnIdol

+0

También me parece que tienen una versión diferente de svctraceviewer - la ficha de mensajes junto a la pestaña XML no aparece – JohnIdol

+0

@JohnIdol: el que la unión está usando ?? –

11

me encontré recientemente, el mismo problema que en la actualización a la pregunta original: la traza estaba mostrando que un mensaje ha sido enviado, pero el mensaje en sí no estaba allí. Para mí, la solución fue agregar una fuente System.ServiceModel.MessageLogging. Aquí está mi sección de configuración 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> 

Y mi/sección de diagnóstico system.serviceModel:

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

Una vez que he añadido la fuente MessageLogging, la TraceViewer mostraron rastros "Mensaje de registro de seguimiento", que contenía el mensajes reales de SOAP.

Cuestiones relacionadas