Ответ 1
Уменьшить тайм-аут
Самый простой и неинтрузивный способ проверить это, вероятно, просто уменьшить тайм-аут до довольно небольшого числа, например, 3 или 5 минут. Таким образом, вы можете приостановить на несколько минут, чтобы имитировать более длительную паузу, не беспокоясь о перезагрузке приложения или специальном reset коде, оказывающем какое-либо влияние на результаты теста.
Вы можете изменить тайм-аут состояния сеанса в нескольких местоположениях - глобально (в файле web.config, расположенном в папке конфигурации для применимой версии платформы .NET) или только для вашего приложения.
Чтобы изменить тайм-аут только для вашего приложения, вы можете добавить в приложение следующее: web.config:
<system.web>
<sessionState timeout="60" />
...
В качестве альтернативы вы также можете изменить этот же параметр для своего приложения в диалоговом окне конфигурации IIS (я полагаю, что вам все равно нужно иметь определенный web.config для вашего приложения, в противном случае Edit Configuration будет отключен).
Чтобы получить доступ к этому, щелкните правой кнопкой мыши на своем веб-приложении в IIS и перейдите к Свойствам | Вкладка ASP.NET | Изменить конфигурацию | Вкладка "Управление государством" | Тайм-аут сеанса (минуты).
Обратите внимание, что вы также можете управлять этим параметром с помощью кода - если это уже сделано, то параметр в файле web.config будет эффективно игнорироваться, и вам понадобится использовать другой метод.
Вызов Session.Abandon()
Несколько более интрузивный метод, чем установка низкого таймаута, будет заключаться в вызове Session.Abandon(). Не забудьте назвать это со страницы отдельно от вашего приложения, хотя сеанс фактически не завершен до тех пор, пока не будут обработаны все команды script на текущей странице.
Я понимаю, что это был бы довольно чистый способ проверки тайм-аутов сеансов, не ожидая их.
Запустить перезапуск приложения
В конфигурации состояния сеанса по умолчанию вы можете имитировать тайм-аут сеанса, полностью отключив сеансы, заставив приложение перезагрузиться. Это можно сделать несколькими способами, некоторые из которых перечислены ниже:
- Перезапуск пула приложений через
- оснастка MMC IIS
- командная строка (iisapp/a AppPoolID/r)
- изменение web.config, global.asax или dll в каталоге bin
- Перезапустите IIS через
- оснастка MMC IIS
- services.msc и перезапуск службы IIS Admin
- командная строка (iisreset)
Когда я упоминаю "конфигурацию по умолчанию", я имею в виду веб-приложение, настроенное на использование режима состояния сеанса "InProc". Существуют другие режимы, которые могут фактически поддерживать состояние сеанса, даже если веб-приложение перезапускается (StateServer, SQLServer, Custom).
Тампер с механизмом отслеживания состояния
Предполагая, что ваше веб-приложение не настроено с режимом "без файлов cookie" (по умолчанию будут использоваться файлы cookie), вы можете удалить файл cookie, содержащий идентификатор сеанса, из клиентского браузера.
Однако я понимаю, что это не очень симулирует тайм-аут, так как сервер все равно будет знать о сеансе, он просто не увидит, что кто-то его использует. Запрос без идентификатора сеанса просто будет рассматриваться как невидимый запрос, нуждающийся в новом сеансе, который может быть или не быть тем, что вы хотите проверить.