2

因此向 ASP.net MVC 控制器/操作发出请求。这有一个关联的会话。我们实例化 WebClient 对象并调用同一站点上的资源的部分操作。

然而,尽管它是同一个站点,同一个应用程序池,因为 WebClient 创建了一个新请求,它具有不同的会话。(我知道你的想法,如果它在同一个应用程序池、同一个站点上,为什么需要 WebClient)。我已将这些细节遗漏了以免弄脏水,但是 WebClient 是有原因的。

我的理解是,如果可以为 WebClient 分配原始 Request.Cookies 集合中的 cookie,那么 ASP.net 将能够根据现有的 cookie 查找现有的 Session。

所以我想有2个问题:

  1. 这是正确的吗,如果我要(以某种方式)将 cookie 分配给 WebClient,那么由 WebClient 创建的请求最终会获取原始请求的会话。
  2. 如何将当前的 Request.Cookies 分配给 WebClient?

更新

我已经查看并尝试了使用带有 WebClient 类的 CookieContainer以及使用 HttpCookieCollection 和 CookieContainer 发送 cookie,但我还没有找到可行的解决方案。

我们有 Umbraco 和 asp.net MVC 的捆绑解决方案,我们正在使用 webclient 向 Umbraco 发出页面请求。在我的研究中,我还发现可能有其他事实可能导致 cookie 无法像我上面描述的那样工作。所以我想首先要找出关于cookies的全部内容是否允许获取原始会话?或者是否有更好的方法来处理我们正在做的事情?

4

1 回答 1

2

也许您可以尝试此处显示的实现:

使用 HttpCookieCollection 和 CookieContainer 发送 cookie

它将传入的 cookie 复制到传出的外部请求。但是,该实现是用于使用HttpWebRequest. 如果您确实需要使用 WebClient ,那么这可能会很有用: Using CookieContainer with WebClient class

于 2012-08-24T22:51:37.537 回答