寻找与下面的basicHttpBinding等价的customBinding



我想弄清楚如何将下面的基本http绑定转换为自定义绑定。这两个绑定的模式似乎大不相同。

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

您不清楚为什么要将其转换为自定义绑定-通常当其中一个现成的绑定不能满足需求时使用自定义绑定。

一个快速的方法是使用Yaron Naveh的WCF BindingBox(通过这个答案在这里找到)。使用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. 文本编码(必选,可以是Text, Binary, MTOM, Custom)
  7. 传输(必需的,可以是TCP,命名管道,HTTP, HTTPS, MSMQ的口味,自定义)

您可以从MSDN - CusotmBinding类获得更多信息

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

最新更新