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

8
我在MVC6项目中遇到了“记住我”样式复选框的问题。我有一个相关问题, 解决了本地调试的问题,但是在部署到开发环境后,仍然会在20分钟后强制重新登录。
20分钟的时间跨度让我认为IIS的配置有误。我将我的应用程序池(配置为“无托管代码”)空闲计时器设置为1分钟。果然,在1分钟后,我必须再次重新登录。
这让我相信,即使我的cookie被配置为不过期10天,并且SecurityStampValidationInterval设置为10天1分钟,但在应用程序池回收后,我的持久化身份验证cookie不再被接受为有效。
我在早期版本的.NET中看到了类似的情况,与web.config的machine key有关,但是MVC6的web.config没有system.web部分可以放置machine key。
我的.NET5项目DNX针对的是完整的.NET框架,而不是.NET Core。
2个回答

7
您如何配置数据保护?使用IIS和DNX,我们不知道在持久方式下存储密钥的位置,除非您加载一个配置文件,这不是默认设置。因此,一旦应用程序终止,用于签署身份验证cookie的所有密钥都会被丢弃。这在IIS Express中不会发生,因为IIS Express会加载配置文件。
在这里您有几个选择。您可以在IIS服务器上运行配置脚本以创建ASP.NET可以使用的一些注册表项,或者您可以配置数据保护以使用文件系统,如果您想要运行多个主机,则需要这样做。

我明白了。我正在研究数据保护,但是从文档中我无法弄清楚我需要配置它以使用文件系统或注册表来使用持久化密钥。谢谢你的帮助!我知道 .Net 5 还比较新,所以我们都在学习 :) - mituw16
如果您对如何更好地在文档或模板中呈现此内容有建议,请告诉我。 - blowdart
文档非常好!我被绊倒了,因为我没有意识到需要将2 + 2 = 4的连接持久化到文件系统(或注册表)中,以便Identity可以拥有其持久化密钥。实际上,答案就在那里,只是我没有看到它。我一直在解决这个问题,所以错过了简单的答案 :) - mituw16

1

编辑

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


如果您遇到了和我一样的问题,我实现的“解决方案”是将IIS中的空闲计时器设置为0,这意味着永不超时。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接