У меня есть веб-приложение, которое использует куки-файл сессии, чтобы держать пользователей в системе. Когда они входят в систему, система генерирует GUID, который она связывает с записью пользователя в базе данных. Идентификатор GUID, который затем сохраняется в файле cookie, чтобы его можно было прочитать при каждой загрузке страницы и сравнить с записью в базе данных.
Код для установки cookie довольно прост.
Response.Cookies("UserSession")("ID") = vsSessionCookie
Response.Cookies("UserSession").path = "/"
Несмотря на то, что система используется годами, новый клиент начал жаловаться на возникающие ошибки. Когда мы регистрируем информацию об ошибках, когда они возникают, включая файлы cookie, я обнаружил, что файлы cookie сеанса просто больше не присутствуют. Посмотрите на код, который показывает, что если сессионные куки ходят, ошибки приложения.
Обратите внимание, что постоянные файлы cookie, используемые приложением с установленной датой истечения, остаются.
Я знаю, что это должно справиться с этим более изящно, но проблема, о которой я озадачен, заключается в том, что может привести к исчезновению файлов cookie сеанса. Это не тот случай, когда пользователь неактивен в течение определенного периода времени, потому что они утверждают, что это происходит случайно, когда они используют систему. К сожалению, они не являются более конкретными, но в одном случае я обнаружил, что это произошло после того, как они запустили отчет в системе. Этот отчет отображается в новом окне браузера (открывается в JavaScript с помощью Window.Open), поэтому, похоже, что закрытие этого окна уничтожает файлы cookie сеанса в исходном окне.
Система (к сожалению) работает только в IE, но я не могу найти какие-либо настройки, которые могли бы вызвать такое поведение, и она успешно работает для многих других клиентов.
Есть ли где-нибудь настройка, которая может привести к такому поведению? Почему это должно работать для некоторых клиентов, а не для других?
Может быть, это не связано с закрытием окон, и какой-то другой процесс очищает файлы cookie сеанса в середине сеанса, но что?
Так много вопросов .... извините, но если у кого-то есть опыт ситуации, это очень помогло бы!
Для информации веб-система написана на ASP.Net. Существует также система, написанная на классическом ASP, которая также страдает от клиента, поэтому я не верю, что виновата сама веб-система.