.net - 是否没有办法扩展 ASP.Net 表单例份验证,以便 session 可以扩展到 iisreset 之外?

标签 .net asp.net asp.net-mvc iis

我刚刚在另一篇文章中收到 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 /> validationKeydecryptionKey属性设置为 AutoGenerate这意味着它们会随着 IIS 重置而发生变化。

这意味着加密的持久表单例份验证 cookie 在下次出现时将不再有效。

您可以通过手动配置固定 validationKey 来解决此问题和decryptionKey 。为此,请查看这篇文章:

How To: Configure MachineKey in ASP.NET 2.0

向下滚动到“Web Farm Deployment Considerations ”部分并生成加密随 secret 钥。

关于.net - 是否没有办法扩展 ASP.Net 表单例份验证,以便 session 可以扩展到 iisreset 之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207394/

相关文章:

c# - 从 azure 函数连接到 Azure 数据湖 Gen 2

c# - 需要了解以下 C# 虚方法代码

c# - DataTable 上的 LINQ 查询

.net - 使用在运行时在字符串中定义的名称调用动态对象的成员

c# - 是否有类似 .NET 字典的重复键来填充文本文件?

c# - 在动态创建的 Html.AutoCompleteFor 中使用 typeahead-mvc-model

c# - ConnectionString 属性尚未初始化错误

javascript - 阻止 HTML/Javascript 页面在初始化期间加载

jquery - ASP.NET MVC 中的链接样式失败问题

asp.net-mvc - Azure Web 作业 - 数据处理