1

我在本地运行一个 WCF 客户端,它总是抛出带有以下文本的 MessageSecurityException: “从另一方收到不安全或不正确安全的故障。有关故障代码和详细信息,请参阅内部 FaultException。”

内部异常消息是:“验证消息安全性时发生错误

我设置了一个跟踪,在该文件中我可以看到“内部内部”异常消息为:“ 'Body',' http://www.w3.org/2003/05/soap-envelope '所需的消息部分是没有签名。

客户端和服务之间的绑定都完美匹配,它们都使用 netTcpBinding 和 securityMode="Message"。

装饰服务背后接口的ServiceContract是:

 [ServiceContract(ProtectionLevel = ProtectionLevel.None)]

什么可能导致我的错误?我不是 WCF 专家,所以如果您需要更多信息,请发表评论。关于尝试什么的任何想法也会有所帮助,我只是不知道这里发生了什么。

4

1 回答 1

1

默认情况下,所有消息都在 WCF 中签名和加密,你到底为什么要关闭它?

因此,在这种情况下,很可能您的客户端已加密并签署了消息,但由于您在服务合同上的属性,服务器不理解它。

我的建议:除非您有非常令人信服的理由,否则切勿篡改和更改这些设置 - 只需忘记您服务上的该属性并保留默认值:

[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]

或者

[ServiceContract]

如果你真的要关闭它,你需要在对话的双方都关闭它——客户端和服务器都必须就消息是否加密和签名达成一致。

马克

于 2009-08-12T05:18:39.863 回答