You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表单无重复密钥仍出现AntiForgeryToken无法解密错误如何解决?

排查步骤

  • 首先修正Cookie名称硬编码问题
    你的代码中硬写死了Cookie名称 __RequestVerificationToken_L21vYmlsZQ2,该名称的后缀是站点部署路径的Base64编码值,不同环境、不同部署路径下该名称会自动变化,硬编码会导致你取不到正确的Cookie Token。请替换为框架提供的常量:
    .Select(c => c[AntiForgeryConfig.CookieName])
    
  • 修正前端Token取值逻辑
    @Html.AntiForgeryToken() 会同时生成两个配对校验的Token:一个是存在Cookie里的加密Token,另一个是渲染到页面隐藏input(name为__RequestVerificationToken)里的表单Token,二者本身就不是相同值,你观察到的两个值不一致属于正常现象。校验失败是因为二者配对关系不匹配,确认你前端请求头X-XSRF-Token取的是页面隐藏input里的value值,而不是Cookie里的Token值。
  • 检查Cookie作用域匹配性
    如果你的站点部署在二级路径下(如https://域名/mobile/),确认接口请求的路径和站点路径在同一级,Cookie的Path属性和请求路径匹配,避免请求时带了其他路径下生成的旧AntiForgery Cookie。
  • 确认MachineKey配置生效
    检查web.config中<machineKey>节点是否放在<system.web>根节点下,且未被IIS站点级别的「自动生成MachineKey」配置覆盖:IIS站点功能视图→Machine Key→取消勾选「在运行时自动生成」「为每个应用程序生成一个唯一的密钥」两个选项,确保你配置的显式密钥生效。
  • 排查Token覆盖问题
    抓包确认页面加载完成后,是否有其他异步请求返回了新的AntiForgery Cookie覆盖了初始Cookie,导致后续请求携带的Cookie Token和页面初始化时取到的请求头Token配对失效。
  • 校验运行环境版本一致性
    确认所有部署节点的.NET Framework版本完全一致,不同版本的AntiForgeryToken加密逻辑存在差异,即使密钥一致也会出现解密失败问题。

内容的提问来源于stack exchange,提问作者ANEES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:54:04