Я пытаюсь получить файл cookie ASPXAUTH профессионально, безуспешно. аналогичный вопрос , опубликованный на этом форуме, не помог.
Мой код показан ниже.Одна известная ошибка - назначить CookieContainer на запрос, что я и сделал.Кроме того, я могу запустить веб-приложение в отладчике и увидеть, что запрос действителен - пользователь действительно аутентифицирован и вызывается 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!!