Не удается заставить ViewState работать на производственном сервере

У меня есть приложение ASP.NET, разработанное на моей Windows Vista (IIS7). Он работает нормально, пока я не разверну его на сервере продукта (W2K3 / IIS6). После развертывания я получаю непротиворечивую «Ссылку на объект, не установленную для экземпляра объекта». при чтении из моего объекта ViewState, который определяет, будет ли кнопка отображать изображение «Вкл» или «Выкл».

Код для загрузки страницы инициализирует ViewState в:

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"];
}

На коробке разработки это работает отлично. Тем не менее, в окне реального времени страница загружается правильно, но когда вы нажимаете кнопку (или любую другую кнопку, которая вызывает обратную передачу), вы получаете ошибку после обратной передачи.

Кто-нибудь может помочь?

12.12.2008 10:21:04
У вас есть один рабочий сервер или несколько серверов, работающих в веб-ферме?
Darin Dimitrov 12.12.2008 23:00:21
1 ОТВЕТ
РЕШЕНИЕ

У вас есть <system.web> <pages enableViewState = "false" /> в файлах web.config или machine.config вашего сервера?

2
12.12.2008 13:50:59
Это была проблема. Сайт был размещен на веб-сайте Microsoft Dynamics CRM. Я не понял, что CRM отключил ViewState.
Baffled by ASP.NET 16.12.2008 09:25:54