asp.net虚拟主机时怎么解决验证失败问题
出现错误:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保
源错误:
|
解决方法:因为.NET在对客户端数据与服务器间传送过程中,需要对数据进行加密与解密,而加密与解密算法可以在web.config里进行配置,在web.config中,validationKey和decryptionKey的默认值是AutoGenerate,由系统随机生成密钥,如果在本地或者使用的是独立主机通常不会有什么问题,但是使用虚拟主机,一台服务器上有多个虚拟主机存在时就会出现以上问题,MSDN中也特别指出不能在群集中使用 AutoGenerate应该指定固定的密钥值,这就需要在web.config中添加关于machineKey的配置项,并手动设置其中的密钥值,这里请注意,不同加密算法对于密钥的最大字符长度是不同的,在这里能够使用的有AES,DES,3DES,SHA1,MD5,我只知道DES的密钥字符长度为16,3DES长度为48,手动设置时密钥长度必须等于其最大长度,否则会出错!至于密钥的16进制值可以随便输入。
具体操作方法如下:
找到网站运行根目录下的web.config文件,设置时,请自行修改KEY值,这关系到服务器的加密安全。
代码:<machineKey validation=”SHA1″ validationKey=”78EA3850338FBADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4″ decryptionKey=”5FC88DFC24AE12BC” />
上述文章的内容,不知道各位小伙伴都看明白了没有,还要不懂的地方,记得要来爱站技术频道网站找小编咨询。想看更多技术文章,关注我们也可以。