【发布时间】:2012-05-11 16:12:55
【问题描述】:
我有一个 ASP.NET MVC 工作流配置为由负载平衡器管理的两个网站。网站使用 Sql Server 作为会话状态提供程序并关闭身份验证(不需要)。
现在,我似乎偶尔会丢失会话状态,我相信这是因为请求正在由备用服务器处理,所以基本上用户是在从服务器跳转到服务器,这取决于负载平衡器认为合适的方式。我并不总是在工作流的同一阶段“丢失会话状态”,所以我认为这与网络场配置 + sql server 会话状态有关。
两个应用程序使用相同的机器密钥来加密和解密存储在 sql server 中的会话状态。
两台服务器上的配置如下:
<authentication mode="None" />
<sessionState mode="SQLServer" sqlConnectionString="{connection-string}" />
<machineKey decryptionKey="777CB456774AF02F7F1AC8570FAF31545B156354D9E2DAAD"
validationKey="89B5B536D5D17B8FE6A53CBB3CA8B8695289BA3DF0B1370BC47D362D375CF91525DDB5307D8A288230DCD4B3931D23AED4E223955C45CFF2AF66BCC422EC7ECD" />
我已经确认这在两台服务器上都是相同的,我有什么遗漏吗?
当我使用单个服务器时,这不会发生在我的开发环境中。
我担心我会患上周五的忧郁症,毫无疑问下周会找到答案,遗憾的是我不想等待!
有什么想法吗?
【问题讨论】:
-
我做了,会话超时设置为 20 分钟,这似乎是从一个页面移到另一个页面发生的,根本没有花太多时间在页面上。
-
我遇到了一个类似但不同的问题。想在此处添加此内容,以防其他人遇到问题并最终出现在此处。最后,我不得不更改 machineKey 以指定解密和验证方法,而不是依赖默认值。因此,当我在 IIS 中生成 machineKey 时,我选择了解密 3DES 和验证 HMASCHA256。
标签: asp.net asp.net-mvc machinekey sql-session-state