2010-11-12 16 views
7

Desidero impostare la versione del messaggio per WSHttpBinding su EnvelopeVersion.Soap11. Non so come farlo. Qualcuno può aiutarmi. Qui è il mio codice vincolanteImpostazione della versione del messaggio nel codice per il client WCF

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

EDIT: qui è il codice per farlo

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; 

risposta

6

Al fine di raggiungere questo obiettivo, è necessario definire un personalizzato vincolante - in config o nel codice.

in config, lo faresti qualcosa di simile:

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

e poi, nel vostro servizio o un client di configurazione, usare qualcosa di simile a questo:

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

Come raggiungere questo attraverso C# codice? – Amzath

+0

@amz: dovresti ** aggiornare ** la tua domanda originale con questa soluzione; lì puoi formattare e presentare correttamente - qui nei commenti, è un affare disordinato .... –

+1

Aggiunto il codice sorgente alla risposta – Amzath