2010-11-12 13 views
7

Deseo configurar la versión del mensaje para WSHttpBinding en EnvelopeVersion.Soap11. No sé cómo hacer eso. Alguien puede ayudarme. Aquí está mi código de enlaceConfiguración de la versión del mensaje en el código para el cliente WCF

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

EDIT: aquí es el código para hacer que

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; 

Respuesta

6

Con el fin de lograr este objetivo, es necesario definir un enlace a medida - en la configuración o en el código.

En config, lo haría algo como esto:

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

y luego, en su servicio o cliente de configuración, usar algo como esto:

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

Cómo achive esto a través de C# ¿código? – Amzath

+0

@amz: debe ** actualizar ** su pregunta original con esta solución; allí puede formatearlo y presentarlo correctamente: aquí en los comentarios, es un asunto complicado ... –

+1

Agregué el código fuente a la respuesta – Amzath

Cuestiones relacionadas