【问题标题】:ASP.NET Error:The state information is invalid for this page and might be corruptedASP.NET 错误:此页面的状态信息无效并且可能已损坏
【发布时间】:2014-01-17 12:22:47
【问题描述】:

我没有 JQuery 或其他 javascript 更改值或 html 结构。而且我没有动态添加的控件。

我仍然收到错误:此页面的状态信息无效,可能已损坏

错误的发生有些随机。这是我可以复制问题的方法,aspx-file:

<%@ Page ViewStateEncryptionMode ="Never" MaxPageStateFieldLength="40" ValidateRequest="false" Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeFile="tbTest.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>tbTest </title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button id="Submit1" type="submit"  
        runat="server" onClick="btnclick_Click" Text="Submit" /><br />
    <asp:TextBox ID="tbStatus" enableViewState="true" runat="server" TextMode="MultiLine" 
        Width="617px" Height="67px" ReadOnly="True" Font-Size="Smaller"></asp:TextBox>
    <br />
   </form>
</body>
</html>

.cs 文件:

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Init(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DateTime timestamp = DateTime.Now;
            try
            {
                tbStatus.Text = timestamp.ToString() + ". Page Loaded. ";
            }catch (Exception ex) {
            }
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            try
            {
                Response.Cache.SetNoStore();
            } catch (Exception ex){
            } 
        }    
    }

    protected void btnclick_Click(object sender, EventArgs e)
    {
        DateTime timestamp = DateTime.Now;
        try
        {
            tbStatus.Text += Environment.NewLine + timestamp.ToString() + ". TextBox updated. ";

        } catch (Exception ex) {
            tbStatus.Text += Environment.NewLine + timestamp.ToString() + ". Error. " + ex.Message.ToString();
        }
    }
}

这真的让我很头疼。 3-4提交后,错误就在那里。我已经测试了 ViewStateEncryptionMode、MaxPageStateFieldLength、ValidateRequest、AutoEventWireupEnableEventValidation 的更改值,但没有成功。

有什么问题?

【问题讨论】:

    标签: asp.net viewstate


    【解决方案1】:

    我已经搜索了很多页面,最后这对我有用

    protected override object LoadPageStateFromPersistenceMedium() 
    { 
    return Session["_ViewState"]; 
    }
    protected override void SavePageStateToPersistenceMedium(object viewState) 
    { 
    Session["_ViewState"] = viewState; 
    }
    

    【讨论】:

    • 此方法修复了以下异常,而我没有尝试过其他任何方法:内部异常:输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符,两个以上的填充字符,或填充字符中的非法字符。内部异常:无效的视图状态。请注意为我们的 Session 对象使用特定于页面的键,并警告或阻止用户打开您页面的多个实例。除非您在隐藏的输入标签中隐藏唯一键,否则所有实例都将共享相同的视图状态。
    【解决方案2】:

    我遇到了同样的问题,但代码中没有错误。帮助我的是重新启动 asp.net 会话状态服务:

    【讨论】:

      【解决方案3】:

      只需将 asp.net 应用程序的 web.config 文件中的 enableEventValidation 属性设置为 false。

      可能还需要检查 http://blog.syedgakbar.com/2007/11/one-possible-reason-for-the-state-information-is-invalid-for-this-page-exception/

      还有

      http://support.microsoft.com/default.aspx?scid=kb;EN-US;829743

      在 IIS6 上启用的 IIS 压缩也可能导致此问题。确认此功能已关闭。

      【讨论】:

      • 谢谢!我不明白为什么,但是在会话中保存 viewState 解决了它!:protected override object LoadPageStateFromPersistenceMedium() { return Session["_ViewState"]; } protected override void SavePageStateToPersistenceMedium(object viewState) { Session["_ViewState"] = viewState; }
      • 因为只是建议关闭事件验证而被否决。在大多数业务案例中,这不是可接受的响应。
      • @ctb3 说得好。在大多数业务案例中,但并非在所有情况下。
      • 一般来说,除了有问题的页面之外,您仍然希望对每个页面进行验证。
      • 普拉森,谢谢!这解决了我处理会话变量和使用 Dev Express 专有网格视图控件传递自定义回调的问题。确保视图状态已保存解决了这个问题。
      【解决方案4】:

      在 system.web 标签的 webconfig 中添加这个解决了我的问题。

      <pages controlRenderingCompatibilityVersion="4.0" maintainScrollPositionOnPostBack="true" validateRequest="false" />
      

      【讨论】:

        【解决方案5】:

        如果有,请删除 &lt;div&gt;&lt;input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="#" /&gt;&lt;/div&gt; 在母版页中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多