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

  • 相关阅读:
    梦断代码阅读笔记02
    第三周
    第二周
    《大道至简》阅读笔记
    暑假第一周
    hdu-1237简单计算器(栈的运用)
    玩骰子(概率,暴力)
    hdu-5568SUM (dp)
    codeforce-600C. Make Palindrome(贪心)
    codeforce-601A. The Two Routes(最短路)
  • 原文地址:https://www.cnblogs.com/xinaixia/p/4990623.html
Copyright © 2020-2023  润新知