1

我正在服务之间构建一些路由功能。原始服务和做路由的服务具有相同的配置;两者都使用具有以下绑定配置的 netTcpBinding:

netTcpBinding

安全模式="消息"

消息 clientCredentialType="用户名"

服务行为使用我们在机器上安装的 AspNet Membership Provider 和客户端证书。

当我关闭消息安全时,它会很好地中继,但是当它打开时,我得到以下异常:

“无法处理消息。这很可能是因为操作 ' http://foo/Whatever ' 不正确,或者因为消息包含无效或过期的安全上下文令牌,或者因为绑定之间不匹配*。安全如果服务由于不活动而中止通道,则上下文令牌将无效。为了防止服务过早中止空闲会话,请增加服务端点绑定的接收超时。(强调我的)

我的想法是证书在消息上运行了两次(一次在原始调用上,然后在中继上),这就是破坏消息安全令牌的原因。

问题:

  1. 我的想法有目标吗?

  2. 有没有办法在没有令牌服务复杂性的情况下继续使用消息安全进行路由?

4

1 回答 1

1

您提到在无安全性和消息安全性之间切换。您是否确保同时更改 WCF 服务端点以及接收端的端点?如果不是,并且两者不匹配,您将收到错误消息。这就是那个错误似乎对我说的。

对于问题 2,您在什么类型的环境中运行?一个可以使用加密和签名的封闭系统,还是一个可能需要使用特殊密钥的公共环境?

于 2008-09-24T14:56:18.387 回答