我试图在多个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消息检查器为应用程序中的每个服务调用执行此操作.
更新:
我写了一篇关于如何解决这个问题的博客文章.你可以在这里阅读.