【问题标题】:Value stored in session depends on value in HttpRuntime cachesession 中存储的值取决于 HttpRuntime 缓存中的值
【发布时间】:2011-10-19 17:46:37
【问题描述】:

我有所有用户共同的数据存储在HttpRuntime.Cache

然后我在 Session 中存储了一些与用户相关的数据。

HttpRuntime.Cache 具有CacheDependency 机制,可用于定义缓存中的项目之间的关系。

你会用什么来处理 Session 和 Runtime Cache 之间的依赖关系?

除了CacheDependencies,还有CacheItemRemovedCallback。如果可能的话,我可以在此回调期间从每个会话中删除特定值。

【问题讨论】:

    标签: asp.net session caching httpruntime.cache cache-dependency


    【解决方案1】:

    缓存依赖以另一种方式工作,即当缓存依赖于其他东西时,而不是当某些东西依赖于缓存时。

    无法使用CacheItemRemovedCallback 更新Session 对象中的项目。回调不在特定用户的范围内调用,因此您无法访问Session 对象。您必须将数据保存在其他地方,以便您可以访问所有用户的数据,因为数据取决于从缓存中删除的项目可能属于任何用户。

    【讨论】:

    • 是的,我知道缓存依赖的目的。我认为可能有类似的东西可以处理会话和缓存之间的依赖关系。但也许,将用户相关数据从会话移动到存储在运行时缓存中的某个字典或哈希表中,这将是最简单的方法。
    • @Radex:是的,将用户相关数据存储在它所依赖的对象中可能会更容易。您可能希望保留对存在用户数据的对象的引用集合,以便您可以从Session_End 事件中清除用户的数据。请记住,Web 应用程序是多线程的,因此您需要同步对不同用户访问的任何对象的访问。
    猜你喜欢
    • 2012-03-31
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2012-07-25
    相关资源
    最近更新 更多