В вашем определении 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
, и каждый из них может ссылаться на собственную спецификацию wsdl:binding
с другой версией SOAP.и разные политики (в примере я пропустил ссылки на политику).
BasicHttpBinding в WCF всегда использует SOAP 1.1.