Ответ 1
HttpContext.Current
недоступен внутри Session_End
, но вы можете получить доступ к экземпляру сеанса напрямую с помощью this.Session
.
Мне нужно получить доступ к переменным сеанса в событии Session_End в файле global.asax.cs, но HttpContext.Current имеет значение null, поэтому ни одна из переменных сеанса не доступна.
a) Могу ли я получить доступ к сеансу пользователя по-разному, или
b) Есть ли какое-либо другое событие перед Session_End, я могу получить доступ к переменным сеанса пользователя?
HttpContext.Current
недоступен внутри Session_End
, но вы можете получить доступ к экземпляру сеанса напрямую с помощью this.Session
.
Что вы пытаетесь сделать?
Нет события, предшествующего Session_End, которое вы могли бы использовать для доступа к объекту Session.
Если вы сохранили временную метку действия, относящуюся к последнему моменту использования объекта Session, а затем проверили это, вы можете получить представление о том, когда это должно закончиться.
(На основе настроек/конфигурации IIS).
Однако действие доступа к нему продлевало бы жизнь объекта Session.
Конечно, вам нужно будет это проверить, используя скрытую обратную передачу Ajax, которая запускает событие или что-то похожее.
Но на самом деле я бы не советовал это. Что вы пытаетесь сделать, что вам нужно?
Если вы не используете Session_End для конкретной цели принятия действий при сбое сеанса, полагаясь на Session_End, это не очень хорошая идея.
Я не верю, что есть надежный способ захватить конец пользовательского сеанса (например, когда они закрывают браузер).