Понимание времени жизни сессии ASP.Net - PullRequest
4 голосов
/ 04 июня 2009

Я запутался в понятиях времени жизни (или жизненного цикла) сеанса ASP или ASP.Net. Точнее говоря, мои заблуждения таковы:

  1. Как IIS решает, когда начинается новый сеанс и заканчивается существующий? Особенно, как IIS решает, будет ли сеанс продолжаться или заканчиваться, когда мы вызываем код перенаправления?
  2. Как мы можем установить время истечения сеанса? (В настоящее время я знаю только, чтобы установить его через web.config sessionState пункт.)
  3. Возможно ли для одного сеанса доступ к переменным другого сеанса?

Ответы [ 4 ]

5 голосов
/ 04 июня 2009
  1. Сеанс запускается, потому что запрос не содержит cookie сеанса или cookie сеанса, которые он содержит, больше не отображается на сеанс. Сеанс заканчивается: а) он простаивает без дальнейших запросов, ссылающихся на него в течение периода ожидания. б) Его намеренно прервано кодом. c) Сессия в процессе умирает, когда процесс, например, когда приложение перерабатывается.

  2. Различные способы изменить тайм-аут в основном так или иначе изменить web.config или файл конфигурации, из которого наследуется значение.

  3. Нет, если объект сеанса не был намеренно помещен где-то кодом, чтобы другой сеанс мог получить к нему доступ.

4 голосов
/ 04 июня 2009

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

Один из способов установить время истечения - в файле web.config, вы также можете установить его в IIS, перейдя в свойства своего веб-сайта -> вкладка «Домашний каталог» -> кнопка «Настройка» -> вкладка «Параметры» -> время ожидания сеанса.

Вы не сможете получить доступ к чужим данным сеанса.

3 голосов
/ 25 июня 2009

Вы можете установить таймаут сеанса программно с помощью:

Session.Timeout = 60; 
1 голос
/ 25 июня 2009

Не забывайте и настройки AppPool ... по умолчанию (IIS 6 в любом случае) он будет перезагружаться каждые 120 минут. Поэтому возможно, что кто-то может потерять свой сеанс меньше, чем установленное значение Session_Timeout.

...