使用ASP.NET/SQL Server丢失会话状态

我将ASP.NET MVC工作流配置为由负载平衡器管理的两个网站。网站使用sql Server作为会话状态提供者,并关闭身份验证(不需要)。

现在,偶尔我似乎正在失去会话状态,我相信这是因为该请求是由替代服务器处理的,所以本质上用户是从服务器跳到服务器,这取决于负载平衡器如何看待。我并不总是在工作流程的同一阶段“丢失会话状态”,所以我相信它是与web farm配置sql server会话状态有关的。

两个应用程序使用相同的机器密钥来加密和解密存储在sql server中的会话状态。

两台服务器上的配置如下:

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

我已经确认这在两台服务器上都是一样的,有没有我失踪的东西?

当我使用单个服务器时,这不会在我的开发环境中发生。

我害怕我受到周五蓝调的痛苦,毫无疑问,下周将会找出答案,可悲的是我不想等待!

有任何想法吗?

解决方法

发现问题。

当您创建希望使用sql Server共享会话状态的应用程序时,它们需要在IIS中配置相同的ID。这是因为生成的会话ID是基于应用程序ID生成的。 (内部应用程序ID类似于LM / W3SVC / 1

这两台服务器对于IIS中的每个应用程序都有不同的ID。该决议是在“管理网站”下更改ID。高级设置“。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....