我正在本地运行WCF客户端,它总是抛出带有文本的MessageSecurityException: “从另一方收到了一个不安全或不正确安全的故障。请参阅内部FaultException以获取故障代码和详细信息。”
内部异常消息是: “验证邮件的安全性时发生错误”
我设置了一个跟踪,在该文件中我可以看到“内部内部”异常消息: “”正文“,”http://www.w3.org/2003/05/soap-envelope“必填邮件部分未签名。”
绑定在客户端和服务之间完全匹配,所有绑定都使用netTcpBinding和securityMode =“Message”。
ServiceContract装饰服务背后的界面是:
[ServiceContract(ProtectionLevel = ProtectionLevel.None)]
可能导致我的错误的原因是什么?我不是WCF专家所以如果您需要更多信息,请注释。关于尝试什么的任何想法也会有所帮助,我只是不知道这里发生了什么。
答案 0 :(得分:1)
默认情况下,所有邮件都在WCF中进行签名和加密,为什么你们想要将其关闭?
因此,在这种情况下,您的客户很可能已对邮件进行了加密和签名,但由于您在服务合同上的属性,服务器无法理解它。
我的建议:除非你有一个非常令人信服的理由,不要篡改和更改这些设置 - 只需忘记服务上的该属性并保留默认值:
[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
或
[ServiceContract]
如果你真的必须关闭它,你需要在对话的两边关闭它 - 客户端和服务器必须就消息是否加密和签名达成一致。
马克