我刚刚在另一篇文章中收到 ping 消息,因为我的应用程序在 iisreset 后无法让用户保持登录状态。
How do I solve an AntiForgeryToken exception that occurs after an iisreset in my ASP.Net MVC app?
我不得不说我同意评论者的观点,即这是人为的限制。
根据我所读到的有关表单例份验证的内容,登录的 session 信息似乎全部存储在内存中,并且当服务器重新启动时,您会丢失该信息。
我想做的就是能够将该信息存储在某个地方,最好是存储在数据库中,以便我可以继续我的 session 。但我似乎找不到任何方法来扩展它来做到这一点。我错过了什么吗?我是否误解了它的工作原理?
我意识到这是他们为我们提供的“免费”套件,但我不想自己动手,因为他们有很多正确的地方,而且我有可能搞砸自己的解决方案。
编辑:请注意,这与 session 状态没有任何关系。据我所知,我根本不使用 session 状态,除非框架中我下面的某些东西在内部使用它。
我意识到身份验证使用了 cookie,但它们尚未过期。不过,在 iisreset 后我仍然会跳到登录页面。
最佳答案
听起来你的问题是 <machineKey />
validationKey
和decryptionKey
属性设置为 AutoGenerate
这意味着它们会随着 IIS 重置而发生变化。
这意味着加密的持久表单例份验证 cookie 在下次出现时将不再有效。
您可以通过手动配置固定 validationKey
来解决此问题和decryptionKey
。为此,请查看这篇文章:
向下滚动到“Web Farm Deployment Considerations ”部分并生成加密随 secret 钥。
关于.net - 是否没有办法扩展 ASP.Net 表单例份验证,以便 session 可以扩展到 iisreset 之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207394/