Несоответствия с viewstate / функцией / сервером по сравнению с сервером разработки

StackOverflow https://stackoverflow.com/questions/290880

  •  08-07-2019
  •  | 
  •  

Вопрос

Код выглядит примерно так:

protected bool IsOKToSend()
{
    bool IsOK = true;        
    lblErrorSending.Visible = false;
    if (txtUserName.Text == "" )
    { 
    lblErrorSending.Text = "Please enter your username before sending.";
    IsOK = false;
    }
    return IsOK;
}

    protected void btnSubmit_Click(object sender, EventArgs e)
{

    if (IsOKToSend())
    {
        adsUser.Insert();
        Response.Redirect("complete.aspx");
    }
    else
    {
        lblErrorSending.Visible = true;
    }
}

По какой-то причине это не работает стабильно на реальном сервере.Имейте в виду, что это ВСЕГДА работает на моей локальной машине разработки и ИНОГДА (примерно 1 из 3 попыток) работает на живой машине.Когда происходит сбой на реальном сервере страница перезагружается, и все viewstate теряются.

У меня есть ошибка по умолчанию в моем файле webconfig, и страница никогда не перенаправляется на страницу с ошибкой .

Последовательные ошибки легко устраняются, но что-то вроде этого - нет.

Есть идеи о том, что могло бы заставить эту страницу когда-то работать, а когда-то нет и / или почему состояние просмотра не сохраняется, когда оно не работает?Почему я не сталкиваюсь с такой же проблемой на своем локальном компьютере?

Я попытался объединить две функции, чтобы посмотреть, был ли причиной вызов внешней функции проблема, но, к сожалению, это ничего не изменило.Кроме того, значение isOk, похоже, не влияет на то, получу ли я ошибку или нет.

Я удалил весь код из функции загрузки страницы, чтобы убедиться в устранении неполадок корректно, но я все еще получаю ту же проблему.

Любая идея будет оценена по достоинству.

Редактировать:Я собирался отправить это как есть, но я решил попробовать следующее:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    bool IsOK = true;        
    lblErrorSending.Visible = false;
    if (txtUserName.Text == "" )
    { 
        lblErrorSending.Text = "Please enter your username before sending.";
        IsOK = false;
    }
    lblErrorSending.Visible = !IsOK;        
}

Если я нажму несколько раз на кнопку, страница потеряет значение viewstate после нескольких попыток, но не всегда.Так вот главный вопрос, как представляется, проблема с отображение не работает правильно все время.Есть какие-нибудь идеи?

Спасибо.

Это было полезно?

Решение

Здесь я сделаю смелое предположение и скажу, что вы не используете sticky sessions в производстве и у вас есть несколько веб-серверов.Но в стадии разработки у вас есть только один сервер.Вы используете балансировку нагрузки, и время от времени вас переводят на другой сервер с другим machinekey в вашем maching.config.Приложение взрывается.

Или это вообще не то.:)

Если это проблема, вы можете отключить viewstate или синхронизировать ключи в вашем machine.config, и проблема должна исчезнуть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top