Тайм-аут сеанса - это скользящий тайм-аут, который сбрасывается для пользователя до настроенного значения при каждом посещении сервера.
Тайм-аут простоя приложения включается, если не было никаких запросовк вашему приложению за этот период времени.
Поэтому обычно используются следующие сценарии:
Time | User A | User B | Session States
------+--------------+--------------+-------------------------------------------
12:00 | Visits Page1 | | A: New Session, Time-out: 20 minutes
12:02 | Visits Page2 | | A: Time-out reset: 20 minutes
12:10 | | Visits Page1 | A: Time-out: 12 min; B: New: 20 minutes
12:15 | | Visits Page2 | A: Time-out: 07 min; B: Time-out: 20 min
12:22 | | | A: times out; B: 13 min remaining
12:32 | | | Application Shuts Down (Idle time reached)
12:35 | Visits Page3 | | A: New Session Starts
Если пользователь А вернется на сайт после 12:22, у него будет совершенно новый сеанси любые значения, которые вы сохранили там ранее, будут потеряны.
Единственный способ обеспечить сохранение сеанса при перезапуске приложения - это настроить либо службу SessionState, либо состояния сеанса SQL, и убедиться, что вы 've настроил machine.key , чтобы он не генерировался автоматически при каждом перезапуске сервера.
Если вы используете стандартные механизмы ASP.NET для аутентификации, ASP.NET выдастдва файла cookie для каждого пользователя:
- Токен аутентификации: управляется параметром Время ожидания аутентификации , позволяетПользователь может автоматически войти на ваш сайт, если срок действия файла cookie не истек, это может быть фиксированное или скользящее значение по умолчанию, равное 30 минутам, что означает, что его маркер аутентификации может работать с более длительным периодом "простоя", чем его сеанс.
- Токен сеанса: управляется параметром тайм-аута сеанса, позволяет вашему приложению сохранять и получать доступ к значениям для каждого пользователя в течение срока его посещения.
Оба эти куки-файла зашифрованыиспользуя MachineKey - поэтому, если ваше приложение перезагружает и генерирует новый ключ, ни один из этих токенов не может быть расшифрован, требуя от пользователя входа в систему и создания нового сеанса.
Ответ на комментарии:
- Тайм-аут 20-минутного сеанса относится к элементам, которые вы поместили в объект сеанса пользователя ( HttpSessionState ) с использованием метода
Session.Add(string, object)
. - Это зависит от ситуации.Если вы правильно настроили machine.key , токены аутентификации все равно будут действительны, и если ваши сеансы больше не будут "InProc", они также будут сохраняться при перезапуске приложения и будут продолжатьбыть читабельным - см. примечания выше.