Dzwebs.Net

撰写电脑技术杂文十余年

System.Web.HttpException: 验证视图状态MAC失败。如果此应用程序由网络场或群集承载,请确保配置指定了相同的validationKey和验证算法

Admin | 2010-8-11 10:07:57 | 被阅次数 | 12909

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  当您的网站在提交信息到服务器数据库的时候,发生错误,出现如下提示:

  System.Web.HttpException: 验证视图状态MAC失败。如果此应用程序由网络场或群集承载,请确保配置指定了相同的validationKey和验证算法……

  出现这样的问题,请参阅下文,或许对您有所帮助。

  解决办法一

  直接修改web.config
  <pages validateRequest="true" styleSheetTheme="UserDefaultTheme">
  改为
  <pages validateRequest="false" styleSheetTheme="UserDefaultTheme">
  不行就改成这样
  <pages validateRequest="false" styleSheetTheme="UserDefaultTheme" enableEventValidation="false" viewStateEncryptionMode ="Never" >

  解决办法二

  找到网站运行根目录下的web.config文件,如下图加亮行所示加上相应的项。设置时,请自行修改KEY值,这关系到服务器的加密安全。图片看不清晰请点击图片查看。

  代码:<machineKey validation="SHA1" validationKey="78EA3850338FBADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24AE12BC" />

  原因:因为.NET在对客户端数据与服务器间传送过程中,需要对数据进行加密与解密,而加密与解密算法可以在web.config里进行配置,在web.config中,validationKey和decryptionKey的默认值是AutoGenerate,由系统随机生成密钥,如果在本地或者使用的是独立主机通常不会有什么问题,但是使用虚拟主机,一台服务器上有多个虚拟主机存在时就会出现以上问题,MSDN中也特别指出不能在群集中使用 AutoGenerate应该指定固定的密钥值,这就需要在web.config中添加关于machineKey的配置项,并手动设置其中的密钥值,这里请注意,不同加密算法对于密钥的最大字符长度是不同的,在这里能够使用的有AES,DES,3DES,SHA1,MD5,我只知道DES的密钥字符长度为16,3DES长度为48,手动设置时密钥长度必须等于其最大长度,否则会出错!至于密钥的16进制值可以随便输入。

  解决办法三

  出现这样的问题,极有可能是,您的登陆状态Session已经过期,也就是说登陆状态生效,但是,网站的转向登陆页面的代码未能正确转向,所以就出这样的问题。

  解决的办法就是,不用进行任何修改,只需要重新登陆就可以了。


该杂文来自: 网站开发杂文

上一篇:C#如何使用转义字符来正确的表示双引号、单引号等

下一篇:c#获取字符的ASCLL码的函数代码

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计