VS2010在多个WCF客户端之间共享响应Cookie到SOAP 1.1服务

时间:2011-08-20 23:04:49

标签: wcf cookies soap basichttpbinding

我有一个第三方Java Web服务监听三个SOAP 1.1 WSDL端点。其中一个端点用于启动会话并执行一些高级任务,其他端点用于重用初始身份验证的特定于主题的任务。

我正在构建一个C#WCF应用程序来与服务进行通信,我想在三个客户端对象之间共享会话cookie。

分享此Cookie的VS2010“最佳做法”方式是什么?

如果这篇文章仍然是最好的答案,我可以继续使用它,但我会感谢一些额外的反馈,特别是如果.NET 4引入了一个我在网上找不到的简化。 http://megakemp.wordpress.com/2009/02/06/managing-shared-cookies-in-wcf/

我可以非常轻松地创建第一个客户端并保留会话(新的BasicHttpBinding myBinding; myBinding.AllowCookies = true),但我找不到一种优雅的方法来从Connect响应中保存cookie并重用两个辅助客户。

任何见解都表示赞赏。

我应该注意,我知道CookieContainer并使用Add Web Reference而不是Add Service Reference。在我读过的大多数帖子中,该方法被标记为“遗留”,我更愿意保持最新......或者在使用SOAP 1.1时尽可能保持最新。

1 个答案:

答案 0 :(得分:0)

上述文章仍然有效。您必须使用OperationContextScope并访问消息属性以获取协议特定数据。这种复杂性基于以下事实:WCF体系结构独立于协议,而ASMX体系结构依赖于HTTP协议。

ASMX(WebReference)确实是传统技术,但它仍然存在于.NET框架中,因此如果您知道在没有任何高级WS- *标准的情况下您将永远不再需要基本的SOAP消息传递,您仍然可以使用它并使你的生活有点简单。一旦您需要更多内容,您仍然可以重构代码并使用WCF和所提到的代码来处理cookie。