Подтвердить что ты не робот

Тестирование тайм-аута сеанса ASP.NET

Я делаю тестирование Blackbox на веб-сайте ASP.Net, и мне нужно протестировать разные сценарии тайм-аута сеанса.

Я не уверен, что они полностью инкапсулировали таймауты сеанса. Другое, оставив страницу открытой в течение 20 минут, есть ли более простой способ заставить тайм-аут сеанса?

4b9b3361

Ответ 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, содержащий идентификатор сеанса, из клиентского браузера.

Однако я понимаю, что это не очень симулирует тайм-аут, так как сервер все равно будет знать о сеансе, он просто не увидит, что кто-то его использует. Запрос без идентификатора сеанса просто будет рассматриваться как невидимый запрос, нуждающийся в новом сеансе, который может быть или не быть тем, что вы хотите проверить.

Ответ 2

Добавьте страницу на сайт и вызовите Session.Abandon()

Ответ 3

Самый простой способ - открыть страницу на двух разных вкладках, а выход на другой вкладке автоматически завершит сеанс на первой вкладке. Большинство браузеров совместно используют сеанс на вкладке. Поэтому я нахожу это очень простым, не изменяя ничего в web.config. Таким образом, вы можете протестировать, даже если какая-либо особенность не обрабатывает переадресацию на логин, когда сеанс истекает.

Ответ 4

Сделайте короткий тайм-аут.

Ответ 5

Отказов AppPool и сеанс будут потеряны.

Если у вас нет прямого доступа к IIS, вы можете открыть и сохранить Web.Config, чтобы сделать то же самое (не используйте блокнот, он закручивает кодировку).

Ответ 6

Если вы сохраняете информацию о сеансе в файле cookie, вы можете попробовать удалить свои файлы cookie.

Ответ 7

Вы можете изменить таймаут в своем webconfig

 <authentication mode="Forms">
      <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/>
 </authentication>

Ответ 8

Перезапустите пул приложений на сервере.

Ответ 9

У вас есть два варианта: -

1- Уменьшить тайм-аут сеанса в web.config. 2- Перезапустите IIS или пул приложений.

Ответ 10

Обычно я использую сервер состояния сеанса ASP.NET. Помимо других преимуществ во время разработки, я могу просто перезапустить государственную службу ASP.NET, чтобы отказаться от сеанса. Если вы используете сервер состояний, просто запустите services.msc и перезапустите "Государственную службу ASP.NET".