• 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>

  • 相关阅读:
    excel批量导入后 数据库校验存储过程
    编译内核时覆盖KBUILD_BUILD_USER和KBUILD_BUILD_HOST
    EDID真实数据块,请参考标准文档仔细核对
    RK30SDK开发板驱动分析(二):DDR频率配置
    Linux中的固件加载例子
    Android中如何禁止音量调节至静音
    C++中内部类访问外部类的私有成员
    DSD, DFF, DSF, DST概念解析
    Android中播放DSD音乐
    Linux系统调用分析
  • 原文地址:https://www.cnblogs.com/xinaixia/p/4990623.html
Copyright © 2020-2023  润新知