WCF客户端使用多个使用HTTP Cookie的asmx服务
本文关键字:asmx 服务 Cookie 客户端 WCF HTTP | 更新日期: 2023-09-27 17:48:50
我正试图在多个WCF客户端端点中使用相同的http cookie(实际上是asmx会话ID)。
服务器有几个端点,其中一个是:
AuthenticationService.asmx
登录()<-创建一个HTTP cookie,该cookie是服务器ASP。NET会话ID
注销()<-销毁相同的cookie
SomeOtherService.asmx
DoSomeThing()<-从AuthenticationService.asmx.重新查询有效cookie
如何在多个端点之间共享HTTP Cookie。
我无法控制服务器代码,必须使用WCF。
看看这篇文章
它解释了如何在WCF客户端代理中手动管理cookie。更确切地说,WCF公开了一个API,让您从HTTP响应中提取cookie,并以相同的方式手动将cookie设置为HTTP请求
您将要做的是利用此机制从给定客户端代理接收的HTTP响应中手动提取cookie,并将同一cookie分配给另一个客户端代理发送给不同服务的HTTP请求
MSDN论坛上的这个线程解释了如何使用WCF消息检查器为应用程序中的每个服务调用执行此操作。
更新:
我写了一篇关于如何解决这个问题的博客文章。你可以在这里读。
如果启用了asp.net兼容模式,则可以从WCF服务中访问http会话,因此不需要添加任何cookie。
http://msdn.microsoft.com/en-us/library/ms752234.aspx
我刚刚遇到了同样的问题。如果WCF客户端只与一个ASP。NET服务,那么就很容易了。只要将BasicHttpBinding上的AllowCookies属性设置为true,服务代理就会自动处理ASP。NET会话ID cookie。
但我遇到了像你这样的情况,有2个ASP。NET服务,我需要我的WCF客户端与之交谈。NET会话ID cookie,并且我需要能够在对第二个服务的调用中传递该cookie。有人知道怎么做吗?