2017-04-13 34 views
0

错误: “验证视图状态MAC失败。如果此应用程序由Web服务器场或群集托管,请确保配置指定相同的验证密钥和验证算法,AutoGenerate不能在集群中使用。“在ASP.NET中使用自动生成密钥,而不是在服务器场或群集中的Viewstate MAC失败错误

  • 我没有托管Web场或群集。

  • 应用程序有大约100个用户。

  • 只有1位用户收到此消息。

  • 用户只在IE11中获取此错误消息,而不是在使用其他浏览器(Chrome,Firefox)时导致我相信这与浏览器相关。

  • 在no-addons模式下运行IE11同样的错误。

  • 在IIS中自动生成计算机密钥默认值是不变的。

我的目标是找出是什么原因造成的,而不仅仅是一个快速修复。

如果任何人有这种情况发生在他们身上,并可以指出我在正确的方向,它将不胜感激。

回答

0

我找不出是什么导致了这个问题,但我设法修复它。

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

有时只是关掉东西然后回来就可以解决问题。如果有人知道为什么这可以清除一些东西,欢迎其他评论。谢谢。

0

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

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

在MSVS中,还有Debug vs Release web.config文件,它们可能有不同的< machineKey>设置。

我也有PLESK托管的问题。即使没有负载均衡,冗余串联处理,服务器群集或服务器场或代理服务器,此托管软件在指定web.config文件时也会有一些独特的夸克。如果上传的web.config文件出现问题,并且每次更改网页访问设置时都会覆盖。 (这改写了我的网页。配置文件自动生成一个)。同样,对于PLESK,默认会话超时也是不同的(5 vs 20分钟......如果有的话)。

在不是专用服务器的虚拟主机上,我想知道是否有任何交叉授粉,当多个ASP应用程序指定一个< machineKey>。这将视具体情况而定,依赖于哪个IIS/LASP/PLESK类型托管软件正在运行。由于存在许多不同的加密协议(SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512),我不知道您使用哪一种加密协议,并且IE是否存在该协议的问题。

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

相关问题