У меня очень странная проблема с сессией в ASP.NET 2.0. Система, над которой я работаю, использует переменные сеанса для хранения параметров на объектах (например, вопросы и ответы) для создания отчета. Это экземпляры классов с одинаковыми именами, поэтому они заполняются параметрами следующим образом:
Этот отчет создается на 4 страницах формата aspx. Первый определяет параметры местоположения и даты, второй хранит вопросы и третий хранит ответы. Последний отображает ссылки на сгенерированные отчеты в форматах Excel и HTML.
Все переменные данные хранятся в сеансе, и все идет хорошо, до последней страницы, когда происходит что-то вроде Session.Abandon (), происходит событие Session_End и все переменные теряются. Это происходит только один раз в день, для каждого зарегистрированного пользователя при первом использовании отчета, а затем вы можете попробовать целый день десятки раз и больше его не увидите.
Проблема возникает на той же странице ВСЕГДА, а режим сеанса - InProc.
Я уже сделал следующие проверки:
- Проверяется, были ли какие-либо команды Session.Abandon () или Session.Clear (). Их нет.
- Проверено время ожидания сеанса, оно установлено на 18 минут, и проблема возникает в любое время, как указано выше, независимо от того, как долго вы используете его в течение 18 минут.
- Проверено время ожидания формы при Аутентификации. Также установлено 18 минут.
- Я узнал, что в Server.Transfer () есть ошибка, которая может иногда сбрасывать сеанс и представление состояния, и заменяется на Response.Redirec ()
- Строго следил за сессией, и все идет хорошо, а когда страница полностью загружена, она просто умирает. Все переменные исчезли, но сессия все еще работает.
- Насколько мне известно, IIS настроен правильно. У меня нет доступа к нему, но все другие системы работают отлично.
- Также проанализировали некоторые из вышеупомянутых систем в поисках какой-то подсказки о том, что может происходить, но их файлы web.config очень похожи на тот, который у меня возникает, и никакой специальный код для взаимодействия с сессией не реализован. по-другому.
- Также задумывался о мониторинге IIS для перезапусков приложений, но я уверен, что он не превышает предельное значение по умолчанию 15. Тем не менее, у меня нет доступа к серверу IIS, и все тесты, выполняемые на моем компьютере, используют ASP. NET Development Server. Проблема возникает на обоих.
- Проверили возможности повторного использования процесса, такие как изменения .config и asax, изменения в каталоге / on bin, ничего не происходит.
Применяются следующие ограничения:
- Невозможно изменить режим сеанса, отличный от InProc, из-за политики компании.
- Генерация отчета "процесс" была создана на 4 страницах. Я не согласен с этим, но не могу повторить его из-за временных и бюджетных ограничений.
Любые мысли или решения полезны. Я буду в курсе любых обновлений и необходимых тестов.