Удалить из кеша определенные пользовательские данные на Session_End

StackOverflow https://stackoverflow.com/questions/298653

Вопрос

Я вставляю что-то в кеш, когда пользователь входит в систему.

Теперь я хочу удалить это из кэша по истечении сеанса пользователя. HttpContext имеет значение null .. поэтому я не знаю, для какого пользователя истек срок сеанса. Как я могу найти это?

РЕДАКТИРОВАТЬ: , к сожалению, SessionID не предлагает мне много. В данном конкретном случае я использую HttpModule, который обрабатывает AuthorizeRequest для вставки текущего имени пользователя в Cache, чтобы гарантировать, что другой пользователь с другого компьютера не сможет войти в систему. Но сессия является нулевой в HttpModule. Так что я не могу это использовать. Есть другие предложения?

Это было полезно?

Решение

Вы можете попасть на сеанс в HttpModule, вам просто нужно дождаться его инициализации, то есть событие AcquireRequestState ( http://msdn.microsoft.com/en-au/system.web.httpapplication.acquirerequeststate.aspx )

Другие советы

Обработайте событие Session_End в вашем global.asax. Здесь у вас должен быть доступ к SessionID.

Предполагая, что у вас есть доступ к кэшированному элементу на каждой странице, вы можете установить для кэшированного элемента срок скольжения. Установите время истечения так же, как и время сеанса. По истечении скользящего срока кэш обновляется при каждом доступе к объекту и удаляется, если к нему не обращались в течение этого времени.

См. http://msdn.microsoft.com/en-us/. library / 4y13wyk9.aspx для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top