Как определить, когда сеансы истекают в asp.net? - PullRequest
2 голосов
/ 02 февраля 2011

Я хочу отследить, завершился ли пользователь сеансом или истек срок их сеанса. Мне нужно k теперь точно, когда истек срок их сессии (в течение +/- 5 мин). Прямо сейчас, если пользователь оставляет страницу открытой в браузере и возвращается через день, я буду знать, что срок ее действия истек, когда он пытается что-то сделать через день, но на самом деле сессия истекла, скажем, через час бездействия.

Я хочу запускать скрипт каждые 5 минут на сервере, проверять, какие сеансы истекли, и обнаруживать их, а затем записывать время истечения в БД. Как я могу запустить скрипт с такими короткими интервалами на сервере? Что именно делает скрипт? Есть ли лучший способ сделать это?

1 Ответ

10 голосов
/ 02 февраля 2011

В вашем global.asax вы можете захватить событие Session_End. Смотрите этот вопрос для более подробной информации:

Обратите внимание, что пятиминутный тайм-аут не легко возможен, так как вам нужно подождать, пока истечет время сеанса (= обычно 20 минут), прежде чем вы сможете обнаружить бездействие. Таким образом, если вам действительно нужен короткий интервал, вам нужно

С другой стороны, вам также нужно

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