从我所知道的,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加密烟雾和镜像一直是我存在的祸根。
来源
2017-09-08 00:10:00
Rod