c# - .NET 4.5 中的 WCF 不安全响应

标签 c# .net wcf web-services soap

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

使用默认设置调用并出现错误(无身份验证 header )

修改后的代码如下所示:

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

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

但是,我从 WCF 得到异常:

安全处理器无法在邮件中找到安全 header 。这可能是因为消息是不安全的错误,或者是因为通信双方之间的绑定(bind)不匹配。如果为安全配置了服务并且客户端未使用安全性,则可能会发生这种情况。

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

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

最佳答案

我必须添加以下代码来更改“EnableUnsecureResponse”的值

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);

关于c# - .NET 4.5 中的 WCF 不安全响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712708/

相关文章:

c# - ASP.NET MVC 通用存储库

c# - 如果异常是从 Microsoft 的代码中抛出的,我如何找出最初导致异常的原因?

wcf - 学习 Windows Azure 应用程序和 WCF 服务开发的最佳方式

android - 在 Android 中使用带有 Post Params 的 WCF Web 服务

c# - 使用 WaitForSeconds() 时使协程更快吗?

c# - 无效的对象名称 'DB'

c# - 为什么在 Windows 中很难找到打印机状态?

通过 https 负载平衡器的 WCF http 服务

c# - 我们如何阻止鼠标点击和按键被传输到网络浏览器中上传的文档?

c# - 将用户身份附加到 SQL Server 连接