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

时间:2008-10-14 13:30:08

标签: c# asp.net wcf cookies 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。

3 个答案:

答案 0 :(得分:5)

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

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

MSDN论坛上的

This thread解释了如何使用WCF消息检查器为应用程序中的每个服务调用执行此操作。

<强>更新

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

但是我遇到了像你这样的情况,我需要有两个ASP.NET服务,我需要与我的WCF客户端交谈。第一个发布ASP.NET会话ID cookie,我需要能够在调用第二个服务时传递该cookie。有谁知道怎么做?