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

标签 asp.net exception viewstate

我有几个网站每天总共获得大约 3000 次综合浏览量,我每天大约 5-10 次收到此 View 状态错误,在 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 中硬编码机器 key
  • 在 machine.config 中硬编码机器 key
  • 将项目添加到所有网站的 web.config 的页面部分。

  • 机器键看起来像:
    <machineKey validationKey="key goes here" decryptionKey="key goes here" validation="SHA1" decryption="AES" />
    

    页面部分看起来像:
    <pages renderAllHiddenFieldsAtTopOfForm="true" validateRequest="false"  enableEventValidation="false" viewStateEncryptionMode="Never">
    

    据我所知,这些错误与应用程序池回收无关,因为该池设置为每 100,000 个请求回收一次。我不是在经营网络农场或网络花园。我经常会连续收到两三个这样的错误,就好像用户收到错误一样,返回,然后再次单击链接。

    谁有想法?

    最佳答案

    我之前见过由互联网连接速度慢引起的“随机”ViewState 错误。缓慢的连接会导致页面明显地呈现给用户,但它没有完全加载。然后用户将对表单采取行动,因此会出现“随机”问题。

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

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

    ASP.NET: Unable to validate data

    关于asp.net - 无法验证数据。在 System.Web.Configuration.MachineKeySection.GetDecodedData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656636/

    相关文章:

    asp.net - 使用 HTML 'readonly="readonly "' vs. JavaScript ' element.readOnly = true;' 的奇怪行为

    java - 处理在单独线程中抛出的异常的最佳方法是什么?

    asp.net - 页面中仍然会影响页面 View 状态的最后一个事件

    asp.net - 像 Woot 论坛这样的页面上发送的 ViewState 是错误的吗?

    c# - 与任何可用 View 都不匹配

    javascript - 在 asp.net 中输入键作为 Tab 并将焦点移动到下一个控件

    asp.net - ASP.net 4.0 session ID 的最大长度是多少 - 存储为 varchar、char 或 nvarchar?

    java - 将数据存储在自定义检查异常中是一个坏主意吗?

    python - 如何使类的公共(public)属性在初始化后只读?

    c# - 完全禁用 ASP.NET Web 窗体中的 ViewState