2011-08-25 15 views
6

He estado tratando de averiguar qué versión de SOAP 1.1/1.2 está usando en WSDL generado usando WCF BasicHTTPBinding. Pero no he sido capaz de señalar.WCF BasicHttpBinding - Dónde puedo encontrar SOAP1.1 en WSDL

Necesito confirmar esto para poder decirme a los clientes que estamos usando una versión específica de SOAP. El requisito es usar SOAP 1.1. Por lo que leí, BasicHttpBinding usa SOAP1.1 pero no puede encontrar ni verificar.

Podría alguien por favor ayuda. p.

<wsdl:definitions name="MyService" targetNamespace="http://mydomain.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://spotless.com/isb/services" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> 

Respuesta

9

En su definición WSDL WCF incluye espacios de nombres para ambos SOAP 1.1. y SOAP 1.2. El espacio de nombres para SOAP 1.1 tiene el prefijo soap. SOAP 1.1 punto final sólo utilizará este espacio de nombres:

<wsdl:binding name="SomeBinding" type="..."> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="GetTime"> 
    <soap:operation soapAction="..." style="..." /> 
    <wsdl:input name="..."> 
     <soap:body use="..." /> 
    </wsdl:input> 
    <wsdl:output name="..."> 
     <soap:body use="..." /> 
    </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 
<wsdl:service name="..."> 
    <wsdl:port name="..." binding="tns:SomeBinding"> 
    <soap:address location="..." /> 
    </wsdl:port> 
</wsdl:port> 

es lo que ves todos estos elementos prefijados por soap? Eso significa SOAP 1.1 porque el prefijo soap se define para el espacio de nombres SOAP 1.1. Si utiliza el prefijo soap12, significará SOAP 1.2.

Si el servicio WCF tiene múltiples puntos finales tendrá múltiples wsdl:port elementos y cada uno puede hacer referencia a su propia especificación wsdl:binding con una versión diferente de SOAP y diferentes políticas (omití las referencias de política en el ejemplo).

BasicHttpBinding en WCF siempre usa SOAP 1.1.

+0

Gracias @Ladislav Mrnka, eres genio WCF. Gracias –

+0

Esto no tiene mucho que ver con WCF en sí mismo: WSDL es una forma interoperable de describir los servicios. –

Cuestiones relacionadas