无法使ViewState在生产服务器上运行

时间:2008-12-12 10:21:05

标签: asp.net viewstate

我在Vista框(IIS7)上开发了一个ASP.NET应用程序。它可以正常工作,直到我将其部署到产品服务器(W2K3 / IIS6)。部署后,我得到一致的“对象引用未设置为对象的实例”。从我的ViewState对象读取时,该对象确定按钮是否显示“开”或“关”图像。

页面加载的代码将ViewState初始化为on:

if (!IsPostBack)
{
    ViewState["ButtonState"] = true;
}

然后我在OnPreRender方法中检查按钮的状态:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);

    if ((bool)ViewState["ButtonState"])
    {
        MyButton.ImageUrl = Constants.ButtonIcon;
    }
    else
    {
        MyButton.ImageUrl = Constants.NoButtonIcon;
    }
}

要在按钮状态之间切换,我捕获按钮的单击并切换ViewState中的值:

protected void MyButton_Click(object sender, ImageClickEventArgs e)
{
    ViewState["ButtonState"] = !(bool)ViewState["ButtonState"];
}

在开发框中,这非常有效。但是,在活动框中,页面正确加载,但是当您单击按钮(或实际上任何其他导致回发的按钮)时,您会在回发后收到错误。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

你有< system.web>< pages enableViewState =“false”/>在服务器的web.config或machine.config文件中设置?