C# 用于解密web服务响应的密钥不正确

C# 用于解密web服务响应的密钥不正确,c#,wcf,web-services,ws-security,x509,C#,Wcf,Web Services,Ws Security,X509,我正在使用一个WCF客户端来使用我无法控制的第三方web服务。它使用自定义绑定和WS-Security。无app.config,全部代码。我可以成功发送请求并接收响应。然而,似乎.Net无法解密服务响应,所以我必须手动解密。我已经实现了一个自定义编码器并重写了ReadMessage方法。我可以访问原始SOAP响应。我看过MSDN中的代码,也看过他们在博客中解释如何解密响应的代码。我阅读了响应xml模式的oasis规范。响应包含对x509证书的引用,该证书具有解密会话密钥所需的私钥,因此可以解密正

我正在使用一个WCF客户端来使用我无法控制的第三方web服务。它使用自定义绑定和WS-Security。无app.config,全部代码。我可以成功发送请求并接收响应。然而,似乎.Net无法解密服务响应,所以我必须手动解密。我已经实现了一个自定义编码器并重写了
ReadMessage
方法。我可以访问原始SOAP响应。我看过MSDN中的代码,也看过他们在博客中解释如何解密响应的代码。我阅读了响应xml模式的oasis规范。响应包含对x509证书的引用,该证书具有解密会话密钥所需的私钥,因此可以解密正文。根据我试图使用的服务的文档,以及我所读到的几乎所有地方,我应该使用我用来签署请求的证书的私钥,但是我得到一个异常,说密钥不正确。然后,我在所有证书存储中尝试了每一个可能的带有私钥的证书,以查看其中一个是否能够成功解密消息,但所有证书都失败了。如果我理解正确,这意味着服务希望我用我没有的私钥解密消息。我对WCF和web服务本身相当陌生,所以我可能遗漏了一些东西

你知道会发生什么吗?也许我理解错了什么。任何帮助都将不胜感激


谢谢

在我看来,您向供应商询问如何使用他们的服务的工作示例。这就足够解决剩下的问题了。您使用的是第三方软件,他们处于帮助您的最佳位置。要求提供一个工作示例并没有什么丢脸的,因为众所周知,web服务互操作存在问题。谢谢,我将尝试一下。虽然我不认为他们有一个有效的例子,但我至少可以试着问他们我应该使用什么私钥。WS-security有不同的版本,根据我的经验,它们在不同版本的soap中工作的方式不同。去年,我不得不从.net使用一个具有ws-security的JavaSOAPWeb服务。它基本上落在了我的膝盖上,因为客户自己做不到,需要帮助。我花了一个多星期的时间才让它开始工作,我看到了各种各样的异常,包括无法解密。幸运的是,我能够接触到供应商构建的java客户机测试工具,因此通过检查向前流动的soap信封的内容,我能够在.net客户机中进行必要的配置更改终于成功了。是的,您必须交换证书才能使所有这些工作正常进行。是的,整个过程通常是复杂的,尤其是当客户端和服务器位于不同的技术堆栈上时。祝你好运