2010-11-12 19 views
7

Chcę ustawić wersję komunikatu dla WSHttpBinding na EnvelopeVersion.Soap11. Nie wiem, jak to zrobić. Czy ktoś może mi pomóc. Oto mój kod wiążąceUstawienie wersji komunikatu w kodzie klienta WCF

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

EDIT: Oto kod, aby to zrobić

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; 

Odpowiedz

6

Aby to osiągnąć, trzeba określić wiążący zwyczaj - w config lub w kodzie.

W config, można zrobić to tak:

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

a następnie w danej usługi lub klienta config, użyć czegoś takiego:

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

Jak achive to poprzez C# kod? – Amzath

+0

@amz: należy ** zaktualizować ** swoje oryginalne pytanie tym rozwiązaniem; możesz go poprawnie sformatować i zaprezentować - tutaj w komentarzach jest to niechlujny romans ... –

+1

Dodano kod źródłowy do odpowiedzi – Amzath