2010-11-12 19 views
7

Tôi muốn đặt phiên bản tin nhắn cho WSHttpBinding thành EnvelopeVersion.Soap11. Tôi không biết làm thế nào để làm điều đó. Ai giúp tôi với. Đây là mã ràng buộc của tôiCài đặt Phiên bản tin nhắn trong mã cho máy khách WCF

var binding = new WSHttpBinding() 
     { 
      UseDefaultWebProxy = true, 
      Security = 
      { 
       Mode = SecurityMode.Transport, 
       Transport = 
       { 
        ClientCredentialType = HttpClientCredentialType.Basic 
       }, 
      }, 
     }; 

EDIT: đây là đoạn code để làm điều đó

TransportBindingElement transportElement = null; 

     transportElement = new HttpsTransportBindingElement(); 

     ((HttpsTransportBindingElement)transportElement).AuthenticationScheme = AuthenticationSchemes.Basic; 
     ((HttpsTransportBindingElement) transportElement).KeepAliveEnabled = false; 

     var messegeElement = new TextMessageEncodingBindingElement 
     { 
      MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap11, AddressingVersion.None), 
      ReaderQuotas = 
        { 
         MaxArrayLength = 200000, 
         MaxBytesPerRead = 200000, 
         MaxDepth = 200000, 
         MaxNameTableCharCount = 200000, 
         MaxStringContentLength = 200000 
        } 
     }; 

     var binding = new CustomBinding(messegeElement, transportElement); 
     return binding; 

Trả lời

6

Để đạt được điều này, bạn cần phải xác định một phong tục ràng buộc - trong cấu hình hoặc trong mã.

Trong cấu hình, bạn muốn làm điều đó một cái gì đó như thế này:

<system.serviceModel> 
    <bindings> 
     <customBinding> 
     <binding name="Soap11"> 
      <textMessageEncoding messageVersion="Soap11" /> 
      <httpTransport /> 
     </binding> 
     </customBinding> 
    </bindings> 

và sau đó, trong dịch vụ hoặc khách hàng của bạn cấu hình, sử dụng một cái gì đó như thế này:

<services> 
     <service name="test"> 
     <endpoint name="TestEP" 
      address="" 
      binding="customBinding" 
      bindingConfiguration="Soap11" 
      contract="IService" /> 
     </service> 
    </services> 
</system.serviceModel> 
+2

Làm thế nào để đạt được điều này thông qua C# mã? – Amzath

+0

@amz: bạn nên ** cập nhật ** câu hỏi ban đầu của bạn với giải pháp này; ở đó bạn có thể định dạng và trình bày chính xác nó - ở đây trong các nhận xét, đó là một sự lộn xộn .... –

+1

Đã thêm mã nguồn vào câu trả lời – Amzath

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