我有一个Web服务器场,其中包含4个托管Web应用程序(x)的Web服务器,由网络负载均衡器控制,用于已经使用App fabric cache
作为我的会话提供程序的分布式会话维护。
我只使用一个创建了区域的缓存服务器。
我的配置包含地区名称和共享应用ID,在整个服务器场托管的所有网络应用(x)中都是相同的。
但是我看到我是否使用IP访问网络应用程序所有会话都不同
http://10.10.10.1/myapp/file.aspx returns different session values
http://10.10.10.2/myapp/file.aspx returns different session values
http://10.10.10.3/myapp/file.aspx returns different session values
http://10.10.10.4/myapp/file.aspx returns different session values
http://servername/myapp/file.aspx returns different session values
在这种情况下,sharedId的用途是什么?我的目标是保持一个会话,尽管我的应用程序托管在多个服务器中以提高性能。
主要问题是我的缓存无法正常运行,有时会在更改后的1-2分钟内更新会话值
我的web.config设置
<section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere"/>
<dataCacheClient>
<!-- cache host(s) -->
<hosts>
<host name="x" cachePort="22233" />
</hosts>
<securityProperties mode="None" protectionLevel="None" />
</dataCacheClient>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="xyz" sharedId="app123" />
</providers>
</sessionState>
答案 0 :(得分:1)
尝试查看您是否始终使用相同的ASPNET Cookie(在您喜欢的浏览器中使用开发工具)。由于cookie也绑定到域,因此如果域不同,您的浏览器将不会发送它。
在缓存群集上,检查会话数:如果您有多个会话,则分布式会话管理中肯定会出现问题。