ASP.Net 5 标识持久化身份验证不起作用 IIS 7.5 空闲计时器

本文关键字:IIS 计时器 身份验证 Net 标识 持久化 ASP 不起作用 | 更新日期: 2023-09-27 18:34:21

我在MVC6项目上使用"记住我"样式复选框时遇到问题。我在这里有一个相关的问题,解决了在我的本地主机上调试的问题,但是将项目部署到我们的开发环境后,它仍然迫使我在 20 分钟后重新登录。

20 分钟的时间跨度让我觉得 IIS 配置错误。我将应用程序池(配置为"无托管代码"(空闲计时器设置为在 1 分钟后进入空闲状态。果然,1分钟后,我必须再次重新登录。

这让我相信,在应用程序池回收后,我的持久身份验证 Cookie 不再被接受为有效(即使我的 cookie 配置为不过期到 10 天,并且SecurityStampValidationInterval设置为 10 天零 1 分钟(。

我在早期版本的 .NET 中看到过与 web.config 的计算机密钥相关的类似内容,但 MVC6 在 web.config 中没有system.web部分供我放置计算机密钥。

我。NET5项目DNX针对的是完整的.NET框架,而不是.NET Core。

ASP.Net 5 标识持久化身份验证不起作用 IIS 7.5 空闲计时器

您如何配置数据保护?对于 IIS 和 DNX,我们不知道以持久方式将密钥存储在何处,除非您加载配置文件(这不是默认设置(。因此,一旦您的应用程序终止,用于签名的所有密钥都会丢弃身份验证 cookie。这在 IIS Express 中不会发生,因为 IIS Express 加载配置文件。

您在这里有几个选择。可以在 IIS 服务器上运行设置脚本以创建一些 ASP.NET 可以使用的注册表项,也可以将数据保护配置为使用文件系统,如果要运行多个主机,则需要执行此操作。

编辑

查看@blowdart的答案以获得更好的解决方案。


对于遇到与我相同的问题的任何人,我为此实施的"修复"是将 IIS 中的空闲计时器设置为 0,这意味着永远不会超时。

我仍在寻找真正的解决方案,因为某些托管环境可能不允许将空闲计时器设置为 0(通常是共享主机等(。