1

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

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

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

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

任何想法,将不胜感激。

4

1 回答 1

0

更重要的是,有趣的是,当我使用会话状态代替缓存时,一切正常。

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

当前应用程序域的缓存。.

如果您希望所有应用程序域具有相同的缓存,则需要分布式缓存,例如Windows Server AppFabric

于 2013-10-17T20:07:19.523 回答