我想问一下Cache对象的奇怪行为。我使用Cache来存储特定于用户的数据(更准确地说是会话),并将SessionID作为密钥。
由于某种原因,Cache中的数据对于不同的子域似乎不相同。我设法在所有子域中保持SessionID相等: - 我在web配置中的httpCookies元素中设置了域名属性,如“.domain.com”。 - 我使用this技巧确保SessionID cookie存储在所有子域中。 - 我将sessionState模式设置为SQLServer。
我确保所有子域的SessionID都是相同的。更有趣的是,当我使用会话状态代替缓存时,一切正常。会话返回所有子域的预期数据。但是当我使用带有SessionID的缓存作为密钥时,缓存会为不同的子域返回不同的数据。
当然,我可以将它保持在会话状态,但我并不是真的很喜欢它,并尽可能地避免它。
任何想法都会受到赞赏。
答案 0 :(得分:0)
更重要的是,当我使用会话状态时,这很有意思 缓存,一切正常。
它的工作原理是因为您将SessionState存储在SQLServer的集中位置。
The Cache for the current application domain.。
如果要为所有应用程序域提供相同的缓存,则需要分布式缓存,例如 Windows Server AppFabric