应用程序在应用程序池回收时强制用户重新登录

问题描述

我们有一个在 IIS windows server 2016 上运行的私有 .net 应用程序。我们正在使用 sessionstate 服务 使用 cookie 进行表单身份验证

当我们回收应用程序池时,所有用户都会被强制返回登录页面。这不是预期或想要的行为。

如果我们在 Windows 10 上设置相同的代码,我们就没有这个问题。我们正在努力在任何其他环境中复制这一点。

IIS 中是否有一些设置或其他会影响此功能的设置?

解决方法

当我查看文档时,可能是应用程序池的身份会导致此问题。如果应用程序池的标识是 ApplicationPoolIdentity,则什么都不会发生。可能只使用自定义帐户。我觉得这个不太准确,不过你可以查一下身份。

在 IIS 中,您可以更改会话状态模式以在应用程序池回收时保持用户登录。

通常,IIS 将会话状态值和变量存储在本地 Web 服务器的内存中。所以你可以使用SQL Server Mode。 SQL Server 模式将会话状态存储在 SQL Server 数据库中。使用此模式可确保在 Web 应用程序重新启动(包括应用程序池回收)时保留会话状态,并使 Web 场中的多个 Web 服务器可以使用会话状态。

<configuration>
  <system.web>
    <sessionState mode="SQLServer"
       sqlConnectionString="Integrated Security=SSPI;data 
       source=SampleSqlServer;" />
 </system.web>
</configuration>
,

感谢您通过提及用户为我们指明了正确的方向。修复方法是将属性“加载用户配置文件”更改为 True,即默认值。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...