Viewstate MAC 在 ASP.NET 中使用自动生成密钥失败错误,不在服务器场或集群上

Viewstate MAC failed error in ASP.NET using Autogenerate key, not on farm or cluster

错误是: "Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster."

我的目标是找出导致此问题的原因,而不仅仅是快速修复。

如果有人遇到过同样的情况并能指出正确的方向,我们将不胜感激。

我无法弄清楚是什么导致了这个问题,但我设法解决了它。

在 IE11 开发人员工具 (F12) 的仿真选项卡中,我将文档模式从 Edge 切换到 IE10,然后又切换回 Edge。不开玩笑,这解决了问题。

有时只需关闭然后再打开即可解决问题。如果有人知道为什么这可以澄清一些问题,欢迎补充评论。谢谢。

据我所知,ASP ViewState 使用 client/server MAC 地址作为加密 ViewState 数据的默认加密密钥。这是为了确保最初加载网站的 client-sever 对在所有后续连接中都是相同的。如果失败,则假设服务器端的 MAC 地址不同,因为托管网站的集群或服务器场在提交网页时不会将客户端重新连接到完全相同的服务器。被加载。这就是为什么指定一个密钥会覆盖使用两个 MAC 地址作为密钥的需要。但是,情况可能是也可能不是。这是一个误导性的错误标题假定了错误的根本原因。

如果您碰巧在 ASP 中使用 MasterPage,IE 的默认设置为 IE.master,否则所有其他浏览器的默认设置为 Default.Master。如果它位于两个不同的文件夹中,它们可能有两个不同的 web.config 文件以不同方式指定 (或根本不指定)。

在 MSVS 中,还有可能具有不同 设置的 Debug 与 Release web.config 文件。

我也遇到过 PLESK 托管问题。即使没有 load-balancing、冗余串联处理、服务器集群或农场或代理,此托管软件在指定 web.config 文件时也有一些独特的夸克。如果上传的 web.config 文件有问题,只要更改 web-accessed 设置,文件就会被覆盖。 (这将我的 web.config 文件覆盖为 auto-generated 文件)。同样,PLESK 的默认 session 超时是不同的(5 对 20 分钟...如果重要的话)。

在不是专用服务器的虚拟主机上,我想知道当多个 ASP 应用程序指定一个 时是否有任何 cross-pollination。这将 case-by-case 取决于 IIS/LASP/PLESK 类型的托管软件 运行。

有这么多不同的加密协议(SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512),我想知道哪个您正在使用的一个特别是 IE 对该协议有问题。

我会提供这些可能性,让其他人插话揭穿或扩展。我必须承认,ASP 的 ViewState 加密烟雾和镜子一直是我存在的祸根。