问题描述
我们有一个在 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,即默认值。