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