WCF客户端使用多个使用HTTP Cookie的asmx服务

我试图在多个WCF客户端端点中使用相同的http cookie(实际上是asmx sessionid)。

服务器有几个端点,其中一个是:

AuthenticationService.asmx
Login()< – 创建一个HTTP cookie,它是ASP.NET sessionid的服务器
Logout()< – 销毁相同的cookie

SomeOtherService.asmx
DoSomeThing()< – 从AuthenticationService.asmx中重新获取有效的cookie。

如何跨多个端点共享HTTP Cookie。

我无法控制服务器代码,必须使用WCF。

看看这篇文章 。
它解释了如何在WCF客户端代理中手动管理cookie。 更准确地说,WCF公开了一个API,允许您从HTTP响应中提取cookie,并以相同的方式手动将cookie设置为HTTP请求。

您需要做的是利用此机制从给定客户端代理接收的HTTP响应中手动提取cookie,并将该cookie分配给另一个客户端代理发送给不同服务的HTTP请求。

MSDN论坛上的此线程解释了如何使用WCF Message Inspectors为应用程序中的每个服务调用执行此操作。

更新:

我写了一篇关于如何解决这个问题的博客文章。 你可以在这里阅读。

如果您启用了asp.net兼容模式,则可以从WCF服务中访问http会话,因此您不需要添加任何cookie来执行此操作。

http://msdn.microsoft.com/en-us/library/ms752234.aspx

我刚遇到同样的问题。 如果WCF客户端只与一个ASP.NET服务通信,那么它很容易。 只需将BasicHttpBinding上的AllowCookies属性设置为true,服务代理就会自动处理ASP.NET会话ID cookie。

但我有一个像你这样的情况,我需要与我的WCF客户端进行通信,有2个ASP.NET服务。 第一个发布ASP.NET会话ID cookie,我需要能够在调用第二个服务时传递该cookie。 有谁知道如何做到这一点?