.NET 4.5 中的 WCF 不安全响应



我正在开发客户端应用程序以利用SOAP Web服务。添加了 SOAP Web 服务作为服务引用。它连接到 IBM 服务器,服务器需要 WS-Security 基本身份验证。

使用默认设置调用并收到错误(无身份验证标头)

修改后的代码如下所示:

    var service = new RealTimeOnlineClient();
    service.ClientCredentials.UserName.UserName = "xxxxx";
    service.ClientCredentials.UserName.Password = "yyyyy";

现在,当我在 Fiddler 中查看响应时 - 工作正常(我从服务器获得预期的信封),我得到了正确的信封。

但是,我从 WCF 中得到例外:

Security processor was unable to find a security header in the message. This might be because the message is an unsecured fault or because there is a binding mismatch between the communicating parties. This can occur if the service is configured for security and the client is not using security.

SO上的快速搜索和一堆答案将我指向Hot Microsoft Fix,他们在其中添加了新的属性EnableUnsecuredResponse。问题是 - 我无法弄清楚在我的代码或配置中应用此属性的位置。在 web.config 中添加security标记不起作用(错误找不到属性)。

我知道 .NET 3.5 和 2009-2010 年的大多数问题都出现了修补程序。它应该已经在 4.5 中了,对吗?如何将此属性应用于我的代码?

我必须添加以下代码来更改"启用不安全响应"的值

var service = new RealTimeOnlineClient();
service.ClientCredentials.UserName.UserName = "xxxxx";
service.ClientCredentials.UserName.Password = "yyyyy";
var elements = service.Endpoint.Binding.CreateBindingElements();
elements.Find<SecurityBindingElement>().EnableUnsecuredResponse = true;
service.Endpoint.Binding = new CustomBinding(elements);

相关内容

  • 没有找到相关文章

最新更新