【问题标题】:WCF client consuming multiple asmx service that uses HTTP CookiesWCF 客户端使用多个使用 HTTP Cookie 的 asmx 服务
【发布时间】:2010-09-17 02:24:48
【问题描述】:

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

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

AuthenticationService.asmx
Login() Logout()

SomeOtherService.asmx
DoSomeThing()

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

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

【问题讨论】:

    标签: c# asp.net wcf cookies asmx


    【解决方案1】:

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

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

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

    更新:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 问题是我还没有创建asmx服务,这是我无法控制的。我确实可以控制客户端,但据我所知,ASP.Comp 模式适用于服务器端点服务?
      • 是的,只需在网站的 web.config 中启用它即可。
      【解决方案3】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2011-04-19
      • 2014-05-24
      • 1970-01-01
      相关资源
      最近更新 更多