Cookies NULL на некоторых страницах ASP.NET (даже если они есть!) - PullRequest
1 голос
/ 20 января 2010

Я работаю над приложением ASP.NET, и мне трудно понять, почему cookie-файл имеет нулевое значение.

На одной странице (results.aspx) я создаю cookie, добавляя записи каждый раз, когда пользователь нажимает флажок. Когда пользователь нажимает кнопку, он попадает на другую страницу (graph.aspx), где читается содержимое этого файла cookie.

Проблема в том, что cookie не существует в graph.aspx. Следующий код возвращает ноль:

Request.Cookies["MyCookie"];

Странно то, что это проблема только нашего промежуточного сервера. Это приложение развернуто на рабочем сервере, и это нормально. Он также отлично работает локально.

Я поместил код отладки на обе страницы:

StringBuilder sb = new StringBuilder();
foreach (string cookie in Request.Cookies.AllKeys)
{
    sb.Append(cookie.ToString() + "<br />");
}

this.divDebugOutput.InnerHtml = sb.ToString();

На results.aspx (там, где нет проблем) я вижу файлы cookie:

MyCookie __utma __utmb __utmz _csoot _csuid ASP.NET_SessionId __utmc

На graph.aspx вы можете увидеть, что MyCookie не существует

__ UTMA __utmb __utmz _csoot _csuid ASP.NET_SessionId __utmc

С учетом вышесказанного, если я посмотрю на свой FireCookie, я пойму, что тот же cookie действительно существует на ОБАХ страницах! WTF?!?!?!?! (хорошо, разглагольствовать :-))

Кто-нибудь видел что-то подобное раньше? Почему ASP.NET утверждает, что на одной странице файл cookie имеет значение null, а на другой - нет?

Ответы [ 2 ]

1 голос
/ 13 марта 2010

Это происходило потому, что я запускал приложение в другом виртуальном каталоге. Когда я запустил его на оригинальном, это сработало.

0 голосов
/ 26 января 2010

Я бы предложил загрузить средства диагностики отладки IIS. Вполне возможно, что на этом конкретном сервере существует проблема с ресурсами или необработанное исключение, которое убивает этот конкретный cookie-файл ПОСЛЕ того, как он добавляется в ответ, но до того, как он сбрасывается пользователю. Это в основном вызвано рядом исключений, которые происходят в быстрой последовательности, вызывая быструю защиту от сбоев, чтобы завершить процесс w3wp.exe, под которым работает ваша страница. Когда процесс снова помещается в буфер для подачи ответа, файл cookie исчезает, и все, что выходит, - это отображаемый html.

Вы также можете попробовать отключить быструю защиту от сбоев или изменить настройки памяти / настройки рециркуляции в пуле приложений.

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