寻找与以下 basicHttpBinding 等效的 customBinding

Looking for customBinding equivalent for the following basicHttpBinding

我正在尝试弄清楚如何将以下基本 http 绑定转换为自定义绑定。这两个绑定似乎具有截然不同的架构。

  <basicHttpBinding>
    <binding name="MyBinding">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="Certificate" />
      </security>
    </binding>
  </basicHttpBinding>

不清楚为什么要将此转换为自定义绑定 - 通常当其中一个开箱即用的绑定不满足要求时使用自定义绑定。

一个快速的方法是在 SO 上使用 Yaron Naveh 的 WCF BindingBox (found via this answer。将 BindingBox 与您提供的配置一起使用会产生以下结果:

<customBinding>
  <binding name="NewBinding0">
    <security authenticationMode="CertificateOverTransport"
               messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" 
              requireDerivedKeys="false" securityHeaderLayout="Lax" />
    <textMessageEncoding MessageVersion="Soap11" />
    <httpsTransport />
  </binding>
</customBinding>

开发自定义绑定时,您需要牢记以下元素顺序:

  1. TransactionFlow 元素(可选)
  2. ReliableSession 元素(可选)
  3. 安全性(可选,可以是对称、非对称、传输级)
  4. CompositeDuplex 元素(可选)
  5. 传输升级(可选,可以是 SSL 流、Windows 流、对等解析器)
  6. 文本编码(必需,可以是文本、二进制、MTOM、自定义)
  7. 传输(必需,可以是 TCP、命名管道、HTTP、HTTPS、MSMQ 风格、自定义)

您可以从 MSDN 获取更多信息 - CusotmBinding Class

编辑 由于您使用的是自定义二进制编码,因此您可以将 <textMessageEncoding> 元素更改为 <binarMessageEncoding MessageVersion="Soap11">.