在代码中为WCF客户端设置消息版本

在代码中为WCF客户端设置消息版本,wcf,wcf-client,wshttpbinding,Wcf,Wcf Client,Wshttpbinding,我想将WSHttpBinding的消息版本设置为EnveloperVersion.Soap11。我不知道怎么做。有人能帮我吗。这是我的绑定代码 var binding = new WSHttpBinding() { UseDefaultWebProxy = true, Security = { Mode = SecurityMode.Transport,

我想将WSHttpBinding的消息版本设置为EnveloperVersion.Soap11。我不知道怎么做。有人能帮我吗。这是我的绑定代码

var binding = new WSHttpBinding()
        {
            UseDefaultWebProxy = true,
            Security =
            {
                Mode = SecurityMode.Transport,
                Transport =
                {
                    ClientCredentialType = HttpClientCredentialType.Basic
                },
            },
        };
编辑: 下面是执行此操作的代码

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;

为了实现这一点,您需要在配置或代码中定义自定义绑定

在配置中,您可以这样做:

<system.serviceModel>
   <bindings>
      <customBinding>
         <binding name="Soap11">
            <textMessageEncoding messageVersion="Soap11" />
            <httpTransport />
         </binding>
      </customBinding>
   </bindings>
   <services>
      <service name="test">
         <endpoint name="TestEP"
             address=""
             binding="customBinding"
             bindingConfiguration="Soap11"
             contract="IService" />
      </service>
   </services>
</system.serviceModel>

然后,在您的服务或客户端配置中,使用如下内容:

<system.serviceModel>
   <bindings>
      <customBinding>
         <binding name="Soap11">
            <textMessageEncoding messageVersion="Soap11" />
            <httpTransport />
         </binding>
      </customBinding>
   </bindings>
   <services>
      <service name="test">
         <endpoint name="TestEP"
             address=""
             binding="customBinding"
             bindingConfiguration="Soap11"
             contract="IService" />
      </service>
   </services>
</system.serviceModel>

@amz:您应该使用此解决方案更新原始问题;在那里,你可以正确地格式化和呈现它-在这里的评论,这是一个混乱的事情…谢谢,这是我寻找了很长时间的答案!