Подтвердить что ты не робот

Переменные сеанса asp.net на Session_End

Мне нужно получить доступ к переменным сеанса в событии Session_End в файле global.asax.cs, но HttpContext.Current имеет значение null, поэтому ни одна из переменных сеанса не доступна.

a) Могу ли я получить доступ к сеансу пользователя по-разному, или

b) Есть ли какое-либо другое событие перед Session_End, я могу получить доступ к переменным сеанса пользователя?

4b9b3361

Ответ 1

HttpContext.Current недоступен внутри Session_End, но вы можете получить доступ к экземпляру сеанса напрямую с помощью this.Session.

Ответ 2

Что вы пытаетесь сделать?

Нет события, предшествующего Session_End, которое вы могли бы использовать для доступа к объекту Session.

Если вы сохранили временную метку действия, относящуюся к последнему моменту использования объекта Session, а затем проверили это, вы можете получить представление о том, когда это должно закончиться.
(На основе настроек/конфигурации IIS). Однако действие доступа к нему продлевало бы жизнь объекта Session.

Конечно, вам нужно будет это проверить, используя скрытую обратную передачу Ajax, которая запускает событие или что-то похожее.

Но на самом деле я бы не советовал это. Что вы пытаетесь сделать, что вам нужно?

Ответ 3

Если вы не используете Session_End для конкретной цели принятия действий при сбое сеанса, полагаясь на Session_End, это не очень хорошая идея.

Я не верю, что есть надежный способ захватить конец пользовательского сеанса (например, когда они закрывают браузер).