3

I am trying to use the same http cookie (in effect a asmx sessionid), in multiple WCF client endpoints.

The server has several endpoints, one of them is:

AuthenticationService.asmx
Login() <- Creates a HTTP cookie that is the servers ASP.NET sessionid
Logout() <- Destroys the same cookies

SomeOtherService.asmx
DoSomeThing() <- Requeres a valid cookie from the AuthenticationService.asmx.

How can I share the HTTP Cookie across multiple endpoints.

I dont have control over the server code, and the must use WCF.

4

3 回答 3

5

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

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

MSDN 论坛上的这个线程解释了如何使用 WCF 消息检查器为应用程序中的每个服务调用执行此操作。

更新:

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

于 2008-12-19T14:04:11.460 回答
0

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

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

于 2008-12-09T23:17:42.287 回答
0

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

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

于 2008-10-15T00:04:14.667 回答