1

当用户登录时,我在缓存中插入一些东西。

现在我想在用户会话到期时从缓存中删除它。HttpContext 为 null .. 所以我不知道会话为哪个用户过期。我怎样才能找到这个?

编辑:不幸的是 SessionID 并没有给我太多。在这种特殊情况下,我正在做的是使用处理 AuthorizeRequest 的 HttpModule 将当前用户名插入缓存中,以确保来自另一台机器的另一个用户无法登录。但是 HttpModule 中的 Session 为空。所以我不能用那个。还有其他建议吗?

4

3 回答 3

1

处理 global.asax 中的 Session_End 事件。在这里,您应该可以访问 SessionID。

于 2008-11-18T13:12:08.193 回答
1

您可以在 HttpModule 中进入会话,您只需要等到它被初始化,即 AcquireRequestState 事件 ( http://msdn.microsoft.com/en-au/system.web.httpapplication.acquirerequeststate.aspx )

于 2008-11-18T13:45:54.787 回答
1

假设您正在访问每个页面上的缓存项目,您可以将缓存项目设置为具有滑动到期。将过期时间设置为与会话超时时间相同。使用滑动过期,缓存将在每次访问对象时刷新,如果在该时间内未访问,则将其丢弃。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/4y13wyk9.aspx

于 2008-11-18T14:26:44.330 回答