2011-08-25 29 views
6

Tôi đã cố gắng tìm ra phiên bản SOAP 1.1/1.2 đang được sử dụng trong WSDL được tạo bằng WCF BasicHTTPBinding. Nhưng tôi đã không thể xác định được.WCF BasicHttpBinding - Tôi có thể tìm SOAP1.1 trong WSDL

Tôi cần xác nhận điều này để tôi có thể cho khách hàng biết rằng chúng tôi đang sử dụng phiên bản SOAP cụ thể. Yêu cầu là sử dụng SOAP 1.1. Từ những gì tôi đọc BasicHttpBinding sử dụng SOAP1.1 nhưng không thể tìm thấy hoặc kiểm tra.

Có thể ai đó vui lòng trợ giúp. ví dụ:

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

Trả lời

9

Trong định nghĩa WSDL WCF của bạn bao gồm các không gian tên cho cả SOAP 1.1. và SOAP 1.2. Không gian tên cho SOAP 1.1 có tiền tố soap. Điểm cuối SOAP 1.1 sẽ chỉ sử dụng không gian tên này:

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

Bạn có thấy tất cả các thành phần này bắt đầu bằng soap không? Điều đó có nghĩa là SOAP 1.1 vì tiền tố soap được định nghĩa cho không gian tên SOAP 1.1. Nếu nó sử dụng tiền tố soap12 thay vào đó nó sẽ có nghĩa là SOAP 1.2.

Nếu dịch vụ WCF có nhiều điểm cuối, nó sẽ có nhiều thành phần wsdl:port và mỗi tham chiếu có thể tham chiếu đến đặc điểm wsdl:binding của riêng nó với phiên bản SOAP khác nhau và các chính sách khác nhau (tôi đã bỏ qua tham chiếu chính sách trong ví dụ).

BasicHttpBinding trong WCF luôn sử dụng SOAP 1.1.

+0

Cảm ơn @Ladislav Mrnka, bạn là WCF đáng yêu. Cảm ơn bạn –

+0

Điều này không liên quan gì đến WCF - WSDL là cách tương tác để mô tả các dịch vụ. –

Các vấn đề liên quan