我在用户登录时在缓存中插入内容。
现在我想在用户会话到期时从缓存中删除它。 HttpContext为null ..所以我不知道会话过期的用户。我怎样才能找到这个?
编辑:很遗憾,SessionID并没有给我太多帮助。我在这种特殊情况下正在做的是使用一个处理AuthorizeRequest的HttpModule来在Cache中插入当前的userName,以确保来自另一台机器的另一个用户无法登录。但是HttpModule中的Session为null。所以我不能用它。还有其他建议吗?
答案 0 :(得分:1)
处理global.asax中的Session_End事件。在这里,您应该可以访问SessionID。
答案 1 :(得分:1)
你可以在HttpModule中进入会话,你只需要等到它被初始化,即AcquireRequestState事件(http://msdn.microsoft.com/en-au/system.web.httpapplication.acquirerequeststate.aspx)
答案 2 :(得分:1)
假设您正在访问每个页面上的缓存项目,您可以将缓存项目设置为具有滑动到期时间。将到期时间设置为与会话超时相同。使用滑动到期时,缓存将在每次访问对象时刷新,如果在该时间内未访问,则将被处理。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/4y13wyk9.aspx。