WCF BasicHttpBinding - Где я могу найти SOAP1.1 в WSDL - PullRequest
6 голосов
/ 25 августа 2011

Я пытался выяснить, какая версия SOAP 1.1 / 1.2 используется в WSDL, созданной с использованием WCF BasicHTTPBinding.Но я не смог точно определить.

Мне нужно подтвердить это, чтобы я мог сказать клиентам, что мы используем конкретную версию 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/">

1 Ответ

9 голосов
/ 25 августа 2011

В вашем определении 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...