我正在尝试将 netTcpBinding 转换为 customBinding 。
这是 netTcpBinding 配置:
<netTcpBinding>
<binding name="DuplexBinding" sendTimeout="00:00:30" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<reliableSession enabled="true" ordered="true"/>
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
我创建了 CustomDuplexBinding :
<customBinding>
<binding name="CustomDuplexBinding" sendTimeout="00:00:30">
<transactionFlow />
<reliableSession ordered="true"/>
<security authenticationMode="UserNameForCertificate" enableUnsecuredResponse="true">
<secureConversationBootstrap authenticationMode="UserNameForCertificate" />
</security>
<compositeDuplex />
<oneWay />
<binaryMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
</binaryMessageEncoding>
<sslStreamSecurity requireClientCertificate="false"/>
<tcpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>
但是当我跑步时,发生了以下异常:
绑定&#39; CustomDuplexBinding&#39;不支持创建任何渠道类型。 这通常表明CustomBinding中的BindingElements具有 错误地堆叠或错误的顺序。运输是 在堆栈底部需要。推荐的订单 BindingElements是:TransactionFlow,ReliableSession,Security, CompositeDuplex,OneWay,StreamSecurity,MessageEncoding,Transport。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
从错误消息:&#34; ... StreamSecurity,MessageEncoding ......&#34;
在约束性配置中,您有<<binaryMessageEncoding>
后跟<sslStreamSecurity>
。这些需要切换:
<sslStreamSecurity requireClientCertificate="false"/>
<binaryMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
</binaryMessageEncoding>
MSDN上的每Custom Bindings,以下是必需的订单:
只需要最后两个(消息编码和传输);其余的都是可选的。
答案 1 :(得分:1)
我一直遇到同样的问题。尽管流安全性和消息编码元素在原始帖子中是向后的,但即使它们处于正确的顺序,也会发生相同的错误。对我来说,问题在于在安全元素上使用authenticationMode。我的nettcp安全元素与原始海报(使用UserName身份验证的邮件安全性)相同。使用这个工作:
<security authenticationMode="SecureConversation">
<secureConversationBootstrap authenticationMode="UserNameForSslNegotiated" />
</security>