Получите значение файла cookie .ASPXAUTH программно II - PullRequest
1 голос
/ 18 августа 2010

Я пытаюсь получить файл 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!!

1 Ответ

2 голосов
/ 18 августа 2010

Ничто не выглядит явно неправильно, но я проверю следующее:

Можете ли вы увидеть заголовок Set-Cookie, если прочитаете содержимое response.Headers?Вы действительно не хотите анализировать значение cookie из заголовка, если можете его избежать, но это подтвердит, что заголовок, по крайней мере, возвращается в порядке.

Можете ли вы просмотреть файл cookie, если запроситеCookieContainer напрямую с cookieContainer.GetCookies(request.RequestUri)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...