0

我正在尝试做的事情:

  1. 使用普通登录方法/页面登录到 Forms Auth MVC 网站
  2. 在我登录并在主页上后,我想向控制器发送一个 ajax 请求-> 使用 HttpWebRequest 对象请求网页的操作。

问题是我得到的响应是登录页面。这意味着 HttpWebRequest 不尊重我实际登录到该网站的事实。

问题是我需要读取系统上的本地 cookie 并将它们与我的请求一起发送。下面的 cookie 容器是空的。所以,我所要求的只是一种用我机器上的任何 cookie 填充 CookieContainer 的方法。

        CookieContainer cookies = new CookieContainer();
        String URL = "http://mysite.com/pages/fakepage.aspx";
        HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
        webRequest.AllowAutoRedirect = true;
        webRequest.CookieContainer = cookies;
        StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
        string responseData = responseReader.ReadToEnd();

上面的 responseData 包含登录页面:(

4

1 回答 1

0

对于遇到相同问题的任何人,这是该问题的答案。如果您在下面注意到,我只是从 Request 对象中读取 cookie 并用它填充我的 CookieContainer。这可以解决所有问题!

    CookieContainer cookies = new CookieContainer();
    webRequest.CookieContainer = cookies;
    for(int i=0; i<Request.Cookies.Count; i++)
        webRequest.CookieContainer.Add(new Cookie(Request.Cookies[i].Name, Request.Cookies[i].Value, Request.Cookies[i].Path, FormsAuthentication.CookieDomain));
于 2013-04-17T17:41:36.703 回答