2011-08-25 57 views
6

我一直在试图找出在使用WCF BasicHTTPBinding生成的WSDL中正在使用哪个版本的SOAP 1.1/1.2。但我一直无法指出。WCF BasicHttpBinding - 我在哪里可以找到WSDL中的SOAP1.1

我需要确认一下,以便我可以告诉我客户我们正在使用特定版本的SOAP。要求是使用SOAP 1.1。从我读的BasicHttpBinding使用SOAP1.1,但无法找到或检查。

有人可以请帮忙。 例如

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

回答

9

在您的WSDL定义中,WCF包含SOAP 1.1的命名空间。和SOAP 1.2。 SOAP 1.1的命名空间前缀为soap。 SOAP 1.1端点将只使用此命名空间:

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

你看到了所有这些元素通过soap前缀?这意味着SOAP 1.1,因为soap前缀是为SOAP 1.1命名空间定义的。如果它使用soap12前缀,它将意味着SOAP 1.2。

如果WCF服务有多个端点,它将有多个wsdl:port元素,每个元素可以使用不同版本的SOAP和不同策略(我在示例中跳过策略引用)引用它自己的wsdl:binding规范。

WCF中的BasicHttpBinding始终使用SOAP 1.1。

+0

Thanks @Ladislav Mrnka,你是WCF genious。谢谢 –

+0

这与WCF本身没什么关系 - WSDL是可互操作的方式来描述服务。 –