gpt4 book ai didi

asp.net-mvc - ViewState MAC 的 ASP.NET MVC 验证失败

转载 作者:行者123 更新时间:2023-12-03 12:36:25 30 4
gpt4 key购买 nike

在发布了我的 ASP.NET MVC Web 应用程序的新版本后,我经常在浏览该站点时看到这个异常:

System.Web.Mvc.HttpAntiForgeryException:未提供所需的防伪 token 或无效。 ---> System.Web.HttpException: View 状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。 AutoGenerate 不能在集群中使用。 ---> System.Web.UI.ViewStateException:无效的 View 状态。

在我关闭 Firefox 之前,我在 Web 应用程序中访问的每个页面都会继续出现此异常。重新打开 Firefox 后,该站点运行良好。知道发生了什么吗?

补充笔记:

  • 我没有使用任何 ASP.NET Web 控件(我的应用程序中没有 runat="server"的实例)
  • 如果我从我的页面中取出 <%= Html.AntiForgeryToken %>,这个问题似乎会消失
  • 最佳答案

    在幕后,MVC AntiForgeryToken 属性使用机器 key 进行加密。如果您没有在 web.config 中指定机器 key (请参阅 here ),则 ASP.NET ( full description ) 会自动为您生成一个。

    如果重新启动 ASP.NET 应用程序(例如执行 iisreset),浏览器 cookie 中的 AntiForgeryToken 仍将使用旧机器 key 加密,因此它为什么会因上述错误而崩溃。

    因此,在使用 MVC 时,您应该始终在 web.config 中指定机器 key ,例如

    <configuration>
    <system.web>
    <machineKey
    validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
    decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
    validation="SHA1"
    decryption="AES"
    />
    ...

    关于asp.net-mvc - ViewState MAC 的 ASP.NET MVC 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360078/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com