WCF例外 - 'Body','http://www.w3.org/2003/05/soap-envelope'所需的消息部分未签名。问题

时间:2009-08-11 20:33:51

标签: asp.net wcf wcf-binding wcf-security

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

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

我设置了一个跟踪,在该文件中我可以看到“内部内部”异常消息: “”正文“,”http://www.w3.org/2003/05/soap-envelope“必填邮件部分未签名。

绑定在客户端和服务之间完全匹配,所有绑定都使用netTcpBinding和securityMode =“Message”。

ServiceContract装饰服务背后的界面是:

 [ServiceContract(ProtectionLevel = ProtectionLevel.None)]

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

1 个答案:

答案 0 :(得分:1)

默认情况下,所有邮件都在WCF中进行签名和加密,为什么你们想要将其关闭?

因此,在这种情况下,您的客户很可能已对邮件进行了加密和签名,但由于您在服务合同上的属性,服务器无法理解它。

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

[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]

[ServiceContract]

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

马克