丢失会话状态与ASP.NET/SQL服务器(Losing Session State with AS

2019-06-24 09:02发布

我已经配置由负载平衡器管理的两个网站,一个ASP.NET MVC的工作流程。 该网站使用SQL Server作为会话状态提供者和有身份验证关闭(它不需要)。

现在,偶尔我似乎失去会话状态,我相信这是因为请求是由备用服务器来处理,所以本质上是用户从服务器跳转到服务器,根据不同的负载平衡器如何认为合适的。 我并不总是“丢失会话状态”在工作流程相同的阶段,所以我相信这是一些相关的Web场配置+ SQL服务器会话状态。

这两个应用程序使用同一台机器的密钥来加密和解密存储在SQL服务器会话状态。

两个服务器上配置如下:

<authentication mode="None" />
<sessionState mode="SQLServer" sqlConnectionString="{connection-string}" />
<machineKey decryptionKey="777CB456774AF02F7F1AC8570FAF31545B156354D9E2DAAD" 
            validationKey="89B5B536D5D17B8FE6A53CBB3CA8B8695289BA3DF0B1370BC47D362D375CF91525DDB5307D8A288230DCD4B3931D23AED4E223955C45CFF2AF66BCC422EC7ECD" />

我已经确认这是相同的两台服务器上,是有什么我失踪?

当我使用一台服务器,这并不在我的开发环境发生。

我担心我从周五蓝调痛苦,毫无疑问会找出下周答案,可惜我不想等待!

有任何想法吗?

Answer 1:

发现这个问题。

当您创建您期望使用SQL Server共享会话状态的应用程序,他们需要在IIS中配置相同的ID。 这是因为,是根据该应用程序ID生成所生成的会话ID。 (内部应用程序ID是一样的东西LM / W3SVC / 1

两个服务器有不同的ID为IIS中的每个应用程序。 解决方法是改变在'管理网站的ID - 每个服务器上>高级设置。



Answer 2:

  1. 使用IIS管理器,在根目录和网站一级仔细检查你的机器键设置。

  1. 查看本机关键元件上的IsolateApps修改- http://msdn.microsoft.com/en-us/library/w8h3skw9%28v=vs.100%29.aspx

  2. 你最近升级从3.5到4.0吗?

  3. 最后一招 - 回收两台机器上appPools,并重新启动IIS。



Answer 3:

会议有(网络)的应用范围。 看看这个MS KB帮助。

更新:有趣的向下投票。 也许我的建议需要更多的透明度。

除了匹配机键,你必须匹配网站IIS配置(因此它在IIS中的“同一个应用程序”(应用程序路径)。



文章来源: Losing Session State with ASP.NET/SQL Server