ASP.Net 5 身份持久身份验证不工作 IIS 7.5 空闲计时器

ASP.Net 5 Identity Persisted Authentication Not Working IIS 7.5 Idle Timer

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

20 分钟的时间跨度让我觉得 IIS 配置有误。我将我的应用程序池(配置为 "no managed code")空闲计时器设置为在 1 分钟后进入空闲状态。果然,1分钟后,我又得重新登录了。

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

我在早期版本的 .NET 中看到过与 web.config 的机器密钥相关的类似内容,但 MVC6 在 web.config 中没有 system.web 部分给我放一把机器钥匙。

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

编辑

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


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

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

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

这里有几个选项。您可以 运行 或 provisioning script on the IIS server to create some registry entries ASP.NET can use, or you can configure data protection to use the file system 如果您想要 运行 多个主机,您会这样做。