Переменные сеанса 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 не очень хорошая идея.

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

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