Недавно, работая над некоторым кодом для проекта ASP.NET на работе. Нам понадобилось отслеживание, чтобы использовать базовые показатели активности пользователя (количество просмотров страницы и т.д.), Мы будем отслеживать их в Session
, а затем сохранять данные к DB через Session_End
в Global.asax
.
Я начал взламывать, исходный код работал нормально, обновляя БД при каждой загрузке страницы. Я хотел бы удалить этот БД по каждому запросу и просто полагаться на Session_End
для хранения всех данных.
Весь код отслеживания инкапсулируется в класс Tracker
, включая свойства, которые по существу переносят переменные сеанса.
Проблема заключается в том, что когда я выполнил Tracker.Log()
в методе Session_End
, HttpContext.Current.Session
в коде Tracker с ошибкой NullReferenceException
. Теперь это имеет смысл, поскольку HttpContext
всегда относится к текущему запросу и, конечно, в Session_End
, запроса нет.
Я знаю, что Global.asax
имеет свойство Session
, которое возвращает HttpSessionState
, который на самом деле работает нормально (я ввел его в трекер).
Но мне любопытно, как, черт возьми, я могу получить ссылку на объект HttpSessionState
, используемый Global.asax
извне Global.asax
?
Спасибо заранее, ребята, я ценю вход.:)