缓存包含子域的不同数据

时间:2013-10-17 19:50:51

标签: asp.net

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

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

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

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

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

  

更重要的是,当我使用会话状态时,这很有意思   缓存,一切正常。

它的工作原理是因为您将SessionState存储在SQLServer的集中位置。

The Cache for the current application domain.

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