Файл cookie ASP.NET_SessionID НЕ находится в запросе, но отображается в Page_Load () - PullRequest
1 голос
/ 16 февраля 2012

В моем методе Page_Load () веб-приложения asp.net у меня есть следующее:

HttpCookie c = Request.Cookies["ASP.NET_SessionId"];
if (c != null) {
    Label1.Text = "Cookie ASP.NET_SessionId sent by client in the request";
}

Из всех моих браузеров я очистил кеш, куки и т. Д., А затем запустил приложение иМетка показывает, что cookie был найден, хотя заголовок запроса в Fiddler ясно показывает, что в запросе не было cookie.Невозможно отправить какой-либо файл cookie, поскольку в памяти браузера или на жестком диске нет файла cookie с именем ASP.NET_SessionID, и, как я уже говорил, Fiddler ясно показывает, что файл cookie не был отправлен с запросом http.

Fiddler действительно показывает, что в ответе http есть Set-Cookie, но это ПОСЛЕ того, как Page_Load () выполнил.

Итак, я не понимаю, как метод Page_Load () нашел cookie?

Спасибо, что нашли время, чтобы прочитать это.

Ответы [ 2 ]

1 голос
/ 22 апреля 2014

Строковый индексатор для HttpCookieCollection выполняет вызов метода HttpCookieCollection.Get. В соответствии с http://msdn.microsoft.com/en-us/library/ezy11xy2(v=vs.110).aspx, метод Get создаст файл cookie с указанным именем, если файл cookie еще не существует.

Если указанный cookie не существует, этот метод создает новый cookie с этим именем.

Эта проблема уже обожгла меня!

Чтобы проверить, существует ли cookie, не создавая его автоматически, в противном случае вы можете использовать синтаксис, аналогичный приведенному ниже:

bool requestCookieSet = Request.Cookies.AllKeys.Contains(myCookieName);
0 голосов
/ 16 февраля 2012

Попробуйте это insted

if (Request.Cookies["ASP.NET_SessionId"] != null) {
    Label1.Text = "Cookie ASP.NET_SessionId sent by client in the request";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...