当用户进行登录时,我在缓存中插入了一些内容。在Session_End上从缓存中删除特定用户数据
现在我想在用户会话过期时将其从缓存中删除。 HttpContext是空的..所以我不知道会话过期的用户。我怎么能找到这个?
编辑:不幸的SessionID并没有给我太多。我在这种情况下所做的是使用处理AuthorizeRequest的HttpModule在Cache中插入当前用户名,以确保另一台机器的另一个用户无法登录。但会话在HttpModule中为空。所以我不能使用它。还有其他建议吗?
当用户进行登录时,我在缓存中插入了一些内容。在Session_End上从缓存中删除特定用户数据
现在我想在用户会话过期时将其从缓存中删除。 HttpContext是空的..所以我不知道会话过期的用户。我怎么能找到这个?
编辑:不幸的SessionID并没有给我太多。我在这种情况下所做的是使用处理AuthorizeRequest的HttpModule在Cache中插入当前用户名,以确保另一台机器的另一个用户无法登录。但会话在HttpModule中为空。所以我不能使用它。还有其他建议吗?
你可以在一个HTTP模块的会话,你就必须等待,直到它被初始化,即AcquireRequestState事件添加(http://msdn.microsoft.com/en-au/system.web.httpapplication.acquirerequeststate.aspx)
处理global.asax中的Session_End事件。在这里您应该可以访问SessionID。
假设你访问的每个页面的缓存项,您可以设置缓存的项目有滑动到期。将到期时间设置为与会话超时相同。在滑动过期时,缓存将在每次访问该对象时刷新,并在该时间内没有被访问时将被丢弃。
查看http://msdn.microsoft.com/en-us/library/4y13wyk9.aspx了解更多信息。