zoukankan      html  css  js  c++  java
  • Debug 之 The state information is invalid for this page and might be corrupted

    1、问题描述:

      网站部署之后,排序或者搜索之后报错:The state information is invalid for this page and might be corrupted

    2、问题原因:Viewstate (视图状态持久性机制)

      Asp.net页面中ViewState一般是存储在页面的一个隐藏域中:<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="一堆乱七八糟的东西">

    很多人可能都遇到过,视图状态被破坏掉了,页面无法显示,

    3、解决方法

    [1]把页面的 ViewState 去掉,但不是最佳的:

    属性:enableViewStateMac
    指定从客户端回发页时,ASP.NET 是否应该对页的视图状态运行消息身份验证代码 (MAC)。如果为 True,将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。默认值为 True。
    属性:viewStateEncryptionMode
    指定视图状态的加密模式。ViewStateEncryptionMode 属性重写配置文件中设置的该属性。
    此属性可以为下列可能值之一。
    Always:视图状态始终加密。
    Auto
    视图状态根据控件的请求而加密。
    Never
    视图状态从不加密,即使控件请求加密时也是如此。
    此属性是 .NET Framework 2.0 版中的新属性。
    默认值为 Auto。


    引发上面这种错误的一般原因都是因为网页还没有完全下载完,页面的ViewState不完全,然后就有了 Postback ,这样就导致了ViewState验证错误。这种解决方法一般就是在页面或者web.config中加上或更改pages属性,如下:
    <pages enableEventValidation="false" viewStateEncryptionMode ="Never" />
    这样页面就不会进行验证。

    (2)。接受数据的变量相同导致;在页面,ViewState把表格对象保存后,可能用的是xml格式,但是如果DataSet和 DataTable的名字一样,会导致xml结构上出了问题,所以当ViewState重新读取时发生错误(一个页面的内容里包含了同样名字为 __VIEWSTATE的变量的内容,所以在主页面提交时,会发现内容已经变化了.所以没办法提交.)

    3 解决办法:

    首先尝试了在页面,form,repeater上都禁用了viewstate,但是不起作用还是不行,后尝试修改web.config并实现。

    web.config,加配置:<pages validateRequest="false" enableViewStateMac='false' />

    若是崩掉,提示customers之类的错误,再添加一个配置:<customErrors mode="Off" defaultRedirect="GenericErrorPage.htm"></customErrors>

  • 相关阅读:
    win10 访问远程文件夹 此共享需要过时的SMB1协议 你不能访问此共享文件夹
    Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user'
    MySQL 密码参数配置与修改 validate_password
    MySQL 命令行下更好的显示查询结果
    MySQL 数据库的存储结构
    MySQL实验 内连接优化order by+limit 以及添加索引再次改进
    MySQL实验 子查询优化双参数limit
    MySQL 索引结构 hash 有序数组
    MySQL 树形索引结构 B树 B+树
    hbase2.1.9 centos7 完全分布式 搭建随记
  • 原文地址:https://www.cnblogs.com/xinaixia/p/4990623.html
Copyright © 2011-2022 走看看