Как определить, что IIS перезапущен? - PullRequest
2 голосов
/ 18 ноября 2009

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

Но при перезапуске IIS все активные сеансы становятся недействительными без возможности корректной очистки.

Итак, мне нужно определить, когда IIS перезапускается, чтобы разрешить эту ситуацию.

Ответы [ 3 ]

1 голос
/ 18 ноября 2009

Я бы просто поместил что-то в событие application_start в global.asax

http://www.codetoad.com/asp.net_globalasax.asp

Ваше приложение по какой-то причине перезапустилось, и, согласно вашему описанию, оно должно будет очистить все сеансы из БД, независимо от того, происходит ли перезапуск IIS или перезапускается пул приложений и т. Д.

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

0 голосов
/ 18 ноября 2009

А как насчет тайм-аута сессии? Вам нужно очистить после тайм-аутов? также имейте в виду, что вы не можете действительно передавать событие Session.End - оно работает только для незавершенных сеансов

0 голосов
/ 18 ноября 2009

На сервере SQL определено задание DBNAME_Job_DeleteExpiredSessions, в котором хранятся данные сеанса. Если ваша служба агента SQL работает, задание очистит старые сеансы. Подробнее

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