我一直在尝试找出使用WCF BasicHTTPBinding生成的WSDL中使用的SOAP 1.1/1.2版本.但我无法确定.
我需要确认这一点,以便我可以告诉客户我们正在使用特定版本的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/">
Run Code Online (Sandbox Code Playgroud)
在您的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>
Run Code Online (Sandbox Code Playgroud)
你看到所有这些元素都带有前缀soap
吗?这意味着SOAP 1.1,因为soap
前缀是为SOAP 1.1命名空间定义的.如果它使用soap12
前缀而不是它意味着SOAP 1.2.
如果WCF服务有多个端点,它将具有多个wsdl:port
元素,每个元素都可以wsdl:binding
使用不同版本的SOAP和不同的策略引用自己的规范(我在示例中跳过了策略引用).
WCF中的BasicHttpBinding始终使用SOAP 1.1.
归档时间: |
|
查看次数: |
13139 次 |
最近记录: |