Тестирование времени ожидания сеанса ASP.NET - PullRequest
35 голосов
/ 09 октября 2008

Я занимаюсь тестированием черного ящика на веб-сайте ASP.Net, и мне нужно протестировать различные сценарии тайм-аута сеанса.

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

Ответы [ 10 ]

71 голосов
/ 17 декабря 2008

Уменьшение времени ожидания

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

Вы можете изменить время ожидания состояния сеанса в нескольких местах - глобально (в файле web.config, расположенном в папке config для соответствующей версии .NET Framework) или просто для вашего приложения.

Чтобы изменить время ожидания только для вашего приложения, вы можете добавить следующее в web.config вашего приложения:

  <system.web>
    <sessionState timeout="60" /> 
  ...

В качестве альтернативы, вы также можете изменить эту же настройку для своего приложения через диалоговое окно конфигурации IIS (я думаю, что вам все равно нужно определить web.config для вашего приложения, в противном случае Редактирование конфигурации будет отключено).

Чтобы получить доступ к этому, щелкните правой кнопкой мыши свое веб-приложение в IIS и выберите Свойства | ASP.NET вкладка | Изменить конфигурацию | Вкладка «Управление государством» | Время ожидания сеанса (минуты).

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

Вызов Session.Abandon ()

Немного более навязчивой техникой, чем установка низкого тайм-аута, было бы вызвать Session.Abandon (). Обязательно вызывайте это со страницы, отдельной от вашего приложения, поскольку сеанс фактически не заканчивается до тех пор, пока не будут обработаны все команды сценария на текущей странице.

Насколько я понимаю, это был бы довольно простой способ протестировать тайм-ауты сессии, не ожидая их на самом деле.

Принудительный перезапуск приложения

В конфигурации состояния сеанса по умолчанию вы можете имитировать время ожидания сеанса, полностью удаляя сеансы, вызывая перезапуск приложения. Это можно сделать несколькими способами, некоторые из которых перечислены ниже:

  • Перезапуск пула приложений через
    • оснастка IIS MMC
    • командная строка (iisapp / AppPoolID / r)
    • изменение web.config, global.asax или dll в каталоге bin
  • Перезагрузите IIS через
    • оснастка IIS MMC
    • services.msc и перезапуск службы IIS Admin
    • командная строка (iisreset)

Когда я упоминаю «конфигурация по умолчанию», я имею в виду веб-приложение, настроенное для использования режима состояния сеанса «InProc». Существуют другие режимы, которые могут фактически поддерживать состояние сеанса, даже если веб-приложение перезапускается (StateServer, SQLServer, Custom).

Трамбовка с механизмом отслеживания состояния

Предполагая, что ваше веб-приложение не настроено в режиме «без файлов cookie» (по умолчанию будут использоваться файлы cookie), вы можете удалить файл cookie, содержащий идентификатор сеанса, из клиентского браузера.

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

9 голосов
/ 09 октября 2008

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

5 голосов
/ 02 сентября 2013

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

4 голосов
/ 09 октября 2008

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

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

4 голосов
/ 09 октября 2008

Сократить время ожидания.

3 голосов
/ 09 октября 2008

Вы можете изменить тайм-аут в своей веб-конфигурации

 <authentication mode="Forms">
      <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/>
 </authentication>
2 голосов
/ 09 октября 2008

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

1 голос
/ 09 октября 2008

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

0 голосов
/ 23 мая 2015

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

0 голосов
/ 31 мая 2011

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

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

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