管理ASP.NET会话

管理ASP.NET会话,asp.net,asp.net-mvc,session-state,Asp.net,Asp.net Mvc,Session State,我正在寻找一种在事件发生时刷新会话中某些值的方法 例如,导航选项卡可能缓存在每个在线用户的会话中,当选项卡的排列发生更改时,我需要在所有活动会话中传播更改 是否有方法访问所有活动会话并对其进行更改?如果没有,您建议采取什么解决方法?听起来您应该使用缓存而不是会话,例如导航不应该在会话中,甚至不应该在缓存中,至少是明确地。您这样做可能是因为您无法在一个视图中使用多个模型,您需要某种方法来检索和生成导航。正确的方法是使用子操作。子操作的结果可能是cachedI无法使用cache,因为导航菜单针对每个

我正在寻找一种在事件发生时刷新会话中某些值的方法

例如,导航选项卡可能缓存在每个在线用户的会话中,当选项卡的排列发生更改时,我需要在所有活动会话中传播更改


是否有方法访问所有活动会话并对其进行更改?如果没有,您建议采取什么解决方法?

听起来您应该使用缓存而不是会话,例如导航不应该在会话中,甚至不应该在缓存中,至少是明确地。您这样做可能是因为您无法在一个视图中使用多个模型,您需要某种方法来检索和生成导航。正确的方法是使用子操作。子操作的结果可能是cachedI无法使用cache,因为导航菜单针对每个用户都是个性化的。为了得到菜单项的最终列表,需要进行一些验证、权限检查和数据库查询,这就是为什么我要将结果保存在会话中,以防止对每个请求重复所有这些操作。现在,如果有人能帮助你解决实际问题,我将不胜感激。他们正试图帮助你解决实际问题,特别是考虑到你提出解决办法的要求。如果您继续使用@ChrisPratt advice,您会发现您可以使用[OutputCacheAttribute]之类的东西对单个用户进行缓存,这可以通过ContentEncoding、Header、Param和Custom进行更改。您只需在请求中为用户使会话存储的key menuid无效,然后使用OutputCacheAttribute生成子操作并缓存菜单。此后,您将让该用户会话请求根据菜单id参数更改子操作。导航菜单只是一个示例,不是实际问题,也不是需求列表中的唯一项目。我需要的是访问/修改活动会话的方法。另外,为您的解决方案提供代码示例也很好,我很难理解。