2010-01-26 27 views
13

Estoy un poco confundido acerca de cómo se implementa SOAPAction en WCF (y otros marcos de servicios web para el caso).WCF Soap Actions en el encabezado HTTP o encabezado SOAP?

En un cliente de prueba, tengo un inspector de mensajes del cliente configurado para capturar tanto el mensaje SOAP como los encabezados HTTP que se envían con la solicitud. Al menos aquí en el inspector de mensaje del cliente, la acción se muestra como un elemento en el encabezado SOAP:

<s:Header> 
    <Action ... >http://myurl.com/2009/11/MyService/MyMethod</Action> 

Sin embargo, si veo la solicitud de Fiddler, el elemento Action ha desaparecido y en su lugar hay ahora es un adicional entrada en los encabezados HTTP:

SOAPAction: "http://myurl.com/2009/11/MyService/MyMethod" 

¿Alguien puede explicar qué diablos está pasando ??

Gracias!

Respuesta

13

Este es un problema con WCF que no sigue los estándares.

SOAP 1.1 utiliza el encabezado SOAPAction para decidir qué método llamar, pero esto fue un poco complicado ya que el nombre del método estaba incrustado en otra parte del mensaje. SOAP 1.2 resolvió esto y agregó la acción al encabezado de tipo de contenido, y desaprobó el encabezado SOAPAction (aunque ahora es opcional para aquellos clientes que aún desean enviarlo).

Consulte una página del blog o'reilly para obtener más información.

3

Me parece que esos dos son equivalentes, ¿no? Supongo que Fiddler solo interpreta ese encabezado SOAP "", llamándolo "SOAPAction". El valor parece ser el mismo, ¿no?

Lo que obtienes del Client Message Inspector son los datos XML brutos (el formato sin procesar del mensaje SOAP) a medida que se desplazan por el cable de cobre (o fibra). Lo que Fiddler te da es una interpretación orientada a HTTP de mayor nivel del mismo mensaje XML, diría yo.

A juzgar por otras entradas de blog y artículos que he encontrado en Fiddler y SOAP (por ejemplo, this blog post - echa un vistazo a la sección "Captura de muestra"), me parece que Fiddler quitará los encabezados de SOAP e interpretarlos/mostrarlos en un formato personalizado, dejando solo el cuerpo SOAP para que se muestre como el cuerpo del mensaje que se muestra.

¿Existe un problema técnico real? ¿O solo una cuestión de cómo interpretar los dos formatos?

+0

Probablemente sean equivalentes. No es realmente un problema técnico, pero es un poco confuso que mi inspector de mensajes me esté diciendo una cosa, pero el mensaje real que sale es diferente. Además, el proveedor del servicio también verificó que Fiddler tenía razón y mi inspector de mensajes no me dio la verdadera solicitud de salida. Esperaba que alguien pudiera explicar por qué ocurre este comportamiento. – WayneC

4

más probable es que se está viendo la diferencia entre SOAP 1.1 y SOAP 1.2.

Cuestiones relacionadas