2010-03-11 13 views
6

Tengo una aplicación de servicio WCF y en esta aplicación estoy realizando llamadas a un servicio web de terceros a través de una conexión segura.WCF - Visualización de solicitud/respuesta xml a un servicio web seguro

He estado tratando de ver las secuencias de respuesta de solicitud utilizando el violín, pero me he rendido después de probar más de medio día aplicando todo lo que pude encontrar en Internet. Tiene un problema con los certificados aunque hice más certificados de violinistas a la zona de confianza.

¿Cuál es mi mejor opción para simplemente ver las solicitudes xml y las respuestas que estoy haciendo a este servicio web de terceros?

Estoy utilizando clases proxy generadas, por lo que actualmente no tengo acceso al XML sin formato que estoy enviando y recibiendo. Tengo curiosidad si estoy complicando demasiado algo que se puede hacer mucho más simple. Esta es mi máquina de desarrollo y tengo acceso a casi todo, sin restricciones.

Una manera simple de hacerlo, por favor?

EDIT:

En este momento ni siquiera necesito utilizar el rastreo. Solo necesito ver el resultado serializado de mi solicitud/respuesta. Incluso si puedo hacer esto desde el depurador de Visual Studio o tal será de ayuda.

Respuesta

4

Como estaba tratando de leer los mensajes de jabón ay desde el servicio web de asmx que se hace referencia a mi aplicación WCF, la solución a mi problema era crear una clase que hereda de System.Web.Services.Protocols.SoapExtension , registre esta clase en web.config para que todo el tráfico se enrute a través de esta clase y se visualice.

Ninguna de estas comunicaciones aparecería en las trazas de WCF, por lo que no fue suficiente. Sin embargo, fue útil que lo aprendí, así que ahora puedo ver todo lo que sucede entre mi aplicación de servicio wcf y la aplicación web.

En este artículo se clavó para mí how-to-capture-soap-envelopes-when-consuming-a-web-service

+0

Esto fue muy útil, gracias por el consejo Kaivalya. –

+4

El enlace no funcionó para mí, pero este sí lo hizo: http://blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx – galets

2

Agregar a su app.config:

<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel.MessageLogging"> 
    <listeners> 
     <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="messages.svclog" /> 
    </listeners> 
    </source> 
</sources> 

<system.serviceModel> 
<diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="true" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="-1"/> 
</diagnostics> 

Será registrar todos los mensajes de messages.svclog. Luego puedes verlos.

7

Use WCF Tracing - funciona muy bien y viene con un práctico trace viewer utility.

Puede configurar un montón de opciones - pero en su esencia, se le tiene que añadir algo como esto a sus WCF servicio y cliente configuraciones:

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
      <listeners> 
       <add name="traceListener" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData= "c:\log\Traces.svclog" /> 
      </listeners> 
     </source> 
     </sources> 
    </system.diagnostics> 
</configuration> 

Hay una variedad de "escucha de seguimiento" fuera de la caja: uno escribe en la consola de salida en Visual Studio, aquí está creando archivos XML, o puede almacenar cosas en una tabla de base de datos de SQL Server; y todo el mecanismo es extensible; también puede escribir sus propios oyentes de rastreo. !

También ver aquí: Using of WCF Trace y aquí WCF Tracing FAQ para más información.

+0

lo configuro esta manera, pero las huellas no contienen nada acerca de la comunicación entre mi aplicación y la tercera parte de servicios web ... ¿Podría ser debido a SSL ?? – kaivalya

+0

es la comunicación entre "su aplicación y el servicio web de terceros" una llamada de WCF? Entonces definitivamente debería ver las entradas en su registro de WCF. –

+0

3rd party es un servicio web agregado como referencia web a mi aplicación wcf. Y mi aplicación está enviando solicitudes y recibiendo respuestas de ese servicio. Cualquier información de parámetro de respuesta/respuesta de esta comunicación definitivamente no existe en las huellas. He hecho operaciones de búsqueda/búsqueda en la traza incluso con bloc de notas y no hay rastros de ninguno de mis objetos/valores de respuesta/respuesta en el registro. Actualmente estoy implementando el comportamiento de Interceptor para interceptar mensajes, con suerte esto me dará lo que necesito. – kaivalya

Cuestiones relacionadas