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