【发布时间】:2019-11-24 19:51:12
【问题描述】:
我正在尝试以编程方式检索 ASPXAUTH cookie,但没有成功。在此论坛上发布的 similar question 并没有帮助。
我的代码如下所示。一个已知的问题是确保为请求分配一个 CookieContainer,我已经这样做了。此外,我可以在调试器中运行 Web 应用程序并查看请求是否有效——用户确实已通过身份验证并调用了 FormsAuthentication.SetAuthCookie()。
我的代码如下所示。在最后一行中,response.Cookies 始终为空(为简洁起见,删除了 using 和 close() 语句)。
对 stevemegson 的回应:
- 不,response.Headers 集合不包含“Set-Cookie”标头
-
太棒了!如果我查询 CookieContainer,cookie 确实存在:
CookieCollection cookies = cookieContainer.GetCookies(new Uri(BaseUri)); Cookie cookie = null; foreach (Cookie c in cookies) { if (c.Name == ".ASPXAUTH") { cookie = c; break; } } return cookie;
原始代码:
string uri = string.Format("{0}/Account.aspx/LogOn", BaseUri);
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.CookieContainer = cookieContainer;
request.Method = "POST";
string postData = string.Format("UserName={0}&Password={1}&RememberMe=true", UserName, Password);
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Cookie cookie = response.Cookies[".ASPXAUTH"]; // Collection is always empty; returns null!!
【问题讨论】:
标签: c# cookies httpwebrequest