Как узнать страницу, на которой сессия закончилась?

Я нахожусь в Session_End() Global.asax.cs

Есть операция, которую мне нужно сделать, только если сессия была закончена на определенной странице. Параметры (sender и eventArgs) не помогают. Есть ли способ узнать последнюю страницу, на которой был пользователь?

Заранее спасибо.

2 ответа

Вы можете сохранить URL последней страницы, к которой обращались в сеансе, с каждым запросом. Таким образом, когда сеанс заканчивается (global.asax Session_End), вы можете прочитать, какую страницу последний раз посетил пользователь до окончания сеанса.

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

(Это только в том случае, если значением свойства HttpSessionState.Mode состояния сеанса является InProc. В противном случае событие не сработает.)

Вы можете, вероятно, использовать HttpContext.Request свойство, но не уверен, будет ли это все еще действительным после истечения сеанса.

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

Общий сценарий: по окончании сеанса конечный пользователь должен пройти повторную аутентификацию, и, таким образом, вы должны перенаправить на страницу входа напрямую, и если вы используете Forms Authentication тогда вы можете просто сказать FormsAuthentication.RedirectToLoginPage();

Другие вопросы по тегам