C# BasicHttpBinding和MessageVersion.None

C# BasicHttpBinding和MessageVersion.None,c#,wcf,wcf-binding,C#,Wcf,Wcf Binding,如何将XML web服务客户端配置为使用MessageVersion.Soap11WSAddressing10作为标头命名空间。当前它使用MessageVersion.None命名空间,我无法更改它。您需要使用自定义WCF绑定来执行此操作: <system.serviceModel> <bindings> <customBinding> <binding name="Soap11Addr10">

如何将XML web服务客户端配置为使用MessageVersion.Soap11WSAddressing10作为标头命名空间。当前它使用MessageVersion.None命名空间,我无法更改它。

您需要使用自定义WCF绑定来执行此操作:

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

然后在服务端点中引用该自定义绑定(按名称):

    <services>
      <service name="YourAssembly.YourService">
        <endpoint name="test"
                  address=""
                  binding="customBinding"
                  bindingConfiguration="Soap11Addr10"
                  contract="YourAssembly.IYourService" />
      </service>
    </services>
  </system.serviceModel>


如果您想从客户端使用它,您还需要将自定义绑定配置复制到客户端的
app.config
web.config
并在那里引用它,当然(在Visual Studio中使用
Add Service reference
将为您完成此操作)。

这就是解决方案,但我仍然不明白为什么微软说basichttpbinding与WS-Basic Profile 1.1兼容,并且不能设置为使用MessageVersion.Soap11Addr10