asp.net – 无法验证数据.在System.Web.Configuration.MachineKeySection.GetDecodedData

我有几个网站每天总共获得大约3000次综合浏览量,我每天大约有5到10次这个视图状态错误,在global.asax中被捕获:

System.Web.HttpException:无法验证数据. System.Web.Configuration.MachineKeySection.GetDecodedData(Byte [] buf,Byte [] modifier,Int32 start,Int32 length,Int32& dataLength)at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)

我试过了:

>在web.config中对所有网站的机器密钥进行硬编码
>在machine.config中对machien键进行硬编码
>将项目添加到web.config的pages部分以供所有网站使用.

机器键看起来像:

<machineKey validationKey="key goes here" decryptionKey="key goes here" validation="SHA1" decryption="AES" />

Pages部分看起来像:

<pages renderAllHiddenFieldsAtTopOfForm="true" validateRequest="false"  enableEventValidation="false" viewStateEncryptionMode="Never">

我可以说,这些错误与应用程序池回收无关,因为池设置为每100,000个请求回收一次.我没有运行Web场或Web园.我经常连续得到两个或三个这样的错误,好像用户收到错误,返回,然后再次点击链接.

有人有主意吗?

最佳答案 在慢速互联网连接引起之前,我看到过“随机”ViewState错误.缓慢的连接将导致页面可视地呈现给用户,但它没有完全加载.然后,用户将对表单采取行动,从而发生“随机”问题.

查看是否可以将异常时间戳与IIS日志中请求的特定页面相关联.然后,您可以尝试使用类似于Firefox Throttle的重新创建低带宽方案.

下面的类似问题证实了我的经历,也可能是你所看到的:

ASP.NET: Unable to validate data

点赞