2008-11-18 4 views
1

Я вставляю что-то в кеш, когда пользователь делает логин.Удалить из кеш-данных пользователя на Session_End

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

EDIT: К сожалению SessionID не предлагает мне многого. Что я делаю в этом конкретном случае, это использование HttpModule, который обрабатывает AuthorizeRequest для вставки текущего имени пользователя в Cache, чтобы гарантировать, что другой пользователь с другого компьютера не сможет войти в систему. Но сеанс в HttpModule является нулевым. Поэтому я не могу это использовать. Любые другие предложения?

ответ

1

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

1

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

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