【问题标题】:Cache contains different data for subdomains缓存包含子域的不同数据
【发布时间】:2013-10-26 11:40:36
【问题描述】:

我想问一下 Cache 对象的奇怪行为。我使用 Cache 来存储特定于用户的数据(更准确地说是会话),其中 SessionID 作为键。

由于某些原因,缓存中的数据对于不同的子域似乎并不相同。我设法在所有子域中保持 SessionID 相等: - 我在 web 配置中的 httpCookies 元素中设置域属性,例如“.domain.com”。 - 我使用this 技巧来确保 SessionID cookie 存储在所有子域中。 - 我将 sessionState 模式设置为 SQLServer。

我确保所有子域的 SessionID 确实相同。更重要的是,有趣的是,当我使用会话状态代替缓存时,一切正常。会话返回所有子域的预期数据。但是当我使用 SessionID 作为键的缓存时,缓存会为不同的子域返回不同的数据。

当然,我可以将它保持在会话状态,但我不是很喜欢它,并尽量避免它。

任何想法都将不胜感激。

【问题讨论】:

  • 如果你的底层缓存是一个 HttpRuntimeCache,那么每个进程(即每个应用程序池)都有一个。这个主机头站点是否在单个应用程序池中的单个服务器上运行?如果没有,您有多个 HttpRuntimeCache 实例。
  • 所有子域都指向同一个IP。我想那是同一个应用程序池。

标签: asp.net


【解决方案1】:

此外,有趣的是,当我使用会话状态时 缓存,一切正常。

之所以有效,是因为您将 SessionState 存储在 SQLServer 的集中位置。

The Cache for the current application domain.

如果您想为所有应用程序域提供相同的缓存,则需要分布式缓存,例如 Windows Server AppFabric

【讨论】:

  • 我忘了说明所有子域都是同一个应用程序。我的意思是所有子域都指向一个 IP。应用领域不应该也一样吗?
猜你喜欢
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多