【发布时间】: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