代码之家  ›  专栏  ›  技术社区  ›  sirrocco

在Session_End上从缓存中删除特定用户数据

  •  1
  • sirrocco  · 技术社区  · 17 年前

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

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

    编辑: 遗憾的是,SessionID并不能为我提供太多帮助。在这个特殊情况下,我所做的是使用一个处理AuthorizeRequest的HttpModule在Cache中插入当前用户名,以确保来自另一台机器的另一个用户无法登录。但是HttpModule中的Session为null。所以我不能用它。还有其他建议吗?

    3 回复  |  直到 17 年前
        1
  •  1
  •   buggs    17 年前

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

        2
  •  1
  •   Rune Grimstad    17 年前

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

        3
  •  1
  •   Jason Z    17 年前

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

    看见 http://msdn.microsoft.com/en-us/library/4y13wyk9.aspx 了解更多信息。

    推荐文章