我想弄清楚如何将下面的基本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>
在开发自定义绑定时,需要记住元素的顺序:
- TransactionFlow元素(可选)
- ReliableSession元素(可选)
- 安全性(可选,可以是对称,非对称,传输级)
- CompositeDuplex元素(可选)
- 传输升级(可选,可以是SSL流,Windows流,对等解析器)
- 文本编码(必选,可以是Text, Binary, MTOM, Custom)
- 传输(必需的,可以是TCP,命名管道,HTTP, HTTPS, MSMQ的口味,自定义)
您可以从MSDN - CusotmBinding类获得更多信息
编辑由于您使用的是自定义二进制编码,因此您可以将<textMessageEncoding>
元素更改为<binarMessageEncoding MessageVersion="Soap11">
。