ASP.NET中Validation of viewstate MAC failed问题的解决

 

在做一个项目时候,当执行一个Postback会得到如下错误:

 Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.]

在查阅了一些资料后,发现这个错误是由于Viewstate的加密和解密过程出现的差错引起的,引起此类错误的情况可能有:

- web farm 的使用;
- 使用GridView、DetailsView或者FormView等数据绑定组件时指定了DataKeyNames属性;
-文件很大,或者某些原因导致页面打开缓慢。

我是属于第二种情况,在删除页面中四个GridView的DataKeyNames之后,问题就解决了。

问题出现的原因:

GridView中使用DataKeyNames属性时,他的ViewsState会被加密,页面会在<form>标记封闭之前(</form>出现前)向浏览器添加<input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> 标记。但是如果对于一个较大、执行缓慢的页面这个还没有将这些隐藏字段加载到浏览器中你就执行了PostBack,浏览器将会返回不含有这些字段的ViewState因而产生错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值