2012-05-22 9 views
7

No responda usando la herramienta WCF Trace a menos que proporcione instrucciones explícitas sobre cómo capturar el mensaje real incluyendo encabezados y fallas. Este link no funciona.Cómo puedo registrar exactamente los mensajes enviados y recibidos desde un cliente WCF

Además, no responder IClientMessageInspector a menos que sepa cómo conseguirlo para incluir todas las cabeceras (que no lo hace) y las respuestas de captura que tienen elementos de falta que no se analizan.

Con los servicios web pre-wcf, podría escribir un SoapExtension que funcionó a la perfección.

Respuesta

3

escribe un custom message encoder. tiene acceso a todos los encabezados. Dependiendo de cuán genérico quieras que sea tu solución, es posible que debas escribirla de manera tal que entre en el codificador el verdadero codificador.

Hace tan solo unos días implementé un "codificador Wrapper" en this thread. ese codificador cambió el mensaje. no necesita hacer esto, puede simplemente registrarlo y pasarlo al transporte como yo también lo hice.

+0

Voy a tener que probar esto más adelante. Realmente me gustaría iniciar sesión directamente en nuestro registro existente en un formato legible por humanos. – JohnOpincar

+0

necesita el registro de wcf, no el de wcf. mira aquí http://msdn.microsoft.com/en-us/library/ms730064.aspx luego en lugar de System.Diagnostics.XmlWriterTraceListener pon tu propia clase que implementa la interfaz. No lo hice yo mismo aunque –

+0

Finalmente terminé haciendo esto, otro ejemplo de cuán incompleto y doloroso es WCF. – JohnOpincar

1

He encontrado this así:

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

No es lo ideal ya que se debe utilizar una herramienta para ver los mensajes pero parece capturar los mensajes reales con todas las cabeceras y fallas, etc.

+0

Lo probé solución pero no incluye encabezados. – korvinko

Cuestiones relacionadas