Asp.net 缓存包含子域的不同数据

Asp.net 缓存包含子域的不同数据,asp.net,Asp.net,我想问一下缓存对象的奇怪行为。我使用缓存存储特定于用户的数据(更准确地说是会话),并使用SessionID作为键 由于某些原因,缓存中的数据对于不同的子域似乎不相同。我设法使SessionID在所有子域中保持相等: -我在web配置中的httpCookies元素中设置了domain属性,比如“.domain.com”。 -我使用了这个技巧来确保SessionID cookie跨所有子域存储。 -我将sessionState模式设置为SQLServer 我确保SessionID对于所有子域都是相同

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

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

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

当然,我可以将它保持在会话状态,但我并不真正喜欢它,并且尽可能避免它

任何想法都将不胜感激

此外,有趣的是,当我使用会话状态时 当然,一切都很好

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


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

如果基础缓存是HttpRuntimeCache,则每个进程(即每个应用程序池)有一个缓存。此主机头站点是否在单个应用程序池中的单个服务器上运行?如果没有,则有多个HttpRuntimeCache实例。所有子域都指向同一IP。我想是同一个应用程序池。我忘了声明所有的子域都是同一个应用程序。我的意思是所有的子域都指向一个IP。应用程序域不也应该相同吗?