Состояние сеанса asp.net продолжительность жизни

#asp.net #session

#asp.net #сессия #сеанс

Вопрос:

Я прочитал, что asp.net переменная сеанса длится по умолчанию 20 минут при неактивном браузере.

Что произойдет, если пользователь выйдет из системы и сразу же войдет в систему? Или закрыть браузер и перезапустить его? Состояние сеанса «умирает»? Если нет — какова альтернатива, чтобы заставить его умирать при каждом выходе из системы или закрытии браузера?

Спасибо

Ответ №1:

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

Поэтому ответы на ваши вопросы:

Что произойдет, если пользователь выйдет из системы и сразу же войдет в систему?

Файл cookie помечается сервером как недействительный при выходе из системы и ему присваивается совершенно новый файл при повторном входе в систему

Или закрыть браузер и перезапустить его?

При условии, что срок действия сеанса не истек, это не будет иметь никакого значения (поскольку браузер по-прежнему будет отправлять cookie вместе с каждым запросом)

заставить его умирать при каждом выходе из системы или закрытии браузера?

Вы не можете заставить файл cookie «умереть», хотя вы можете установить дату истечения срока его действия в прошлое. Вы никак не можете обнаружить, что пользователь закрывает свой браузер.

Ответ №2:

Остается ли сеанс активным, зависит от двух факторов:

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

Файлы cookie сеанса передаются как непостоянные файлы cookie, что означает, что они должны поддерживаться браузером в течение одного сеанса (браузера), поэтому их не следует отправлять после того, как вы закроете браузер и перезапустите его. Но на самом деле, это полностью зависит от реализации клиентского браузера.

Урок здесь: Да, сеансы истекают, когда обычный пользователь закрывает свой браузер. Но вы не можете и не должны полагаться на это ни в чем важном.

Ответ №3:

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

Ответ №4:

Сеанс.Abandon () удалит всю вашу сессию. Вызывайте это, когда пользователь выходит из системы. Таким образом, каждый раз, когда он выходит из системы и входит в систему, будет создаваться новый сеанс. Тайм-аут сеанса и закрытие браузера автоматически приведут к началу нового сеанса в следующий раз.

Ответ №5:

Сеанс «умирает» после 20 минут бездействия (по умолчанию), или если он был очищен программистом.

Чтобы очистить сеанс, вы вызываете для него Abandon метод. Сделайте это при выходе из системы.

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

Ответ №6:

Я предполагаю, что когда вы хотите, чтобы пользователь вышел из системы, вы хотите, чтобы сеанс был уничтожен, а не только пары ключ / значение сеанса были удалены.

Вызов:

 Session.Abandon();
  

Приведет к уничтожению сеанса.
http://msdn.microsoft.com/en-us/library/ms524310 (v = против 90).aspx