Inconsistências com viewstate / função / servidor vs servidor de desenvolvimento

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

  •  08-07-2019
  •  | 
  •  

Pergunta

O código é algo como isto:

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

Por algum motivo ele não funciona de forma consistente no servidor ao vivo. Tenha em mente que ele sempre funciona na minha máquina de desenvolvimento local e às vezes (Cerca de 1 em cada 3 tentativas) trabalha na máquina ao vivo. Quando ele falha no servidor ao vivo recarrega a página e tudo viewstate são perdidas.

Eu tenho um prendedor de erro padrão no meu arquivo webconfig ea página nunca é redirecionado para a página de erro.

bug consistente são fáceis de solucionar problemas, mas algo assim não é.

Qualquer ideia sobre o que poderia tornar esta página sometime funciona e às vezes não, e / ou por o viewstate não são mantidos quando ele falhar ao trabalho? Por que não estou recebendo o mesmo problema na minha máquina local?

Eu tentei fundir os dois função para ver se chamar a função externa estava causando a questão, mas isso não muda nada, infelizmente. Além disso, o valor de Isok não parece influenciar se eu vou conseguir o bug ou não.

Eu removi todo o código na função de carregamento da página para se certificar de solução de problemas corretamente, mas ainda estou recebendo o mesmo problema.

Qualquer idéia será apreciado.

Edit: Eu ia enviar este como é, mas eu decidi tentar o seguinte:

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

Se eu clicar algumas vezes no botão na página perde o valor viewstate depois de algumas tentativas, mas nem sempre. Assim, a questão principal aqui parece ser um problema com o viewstate não funcionando corretamente o tempo todo. Alguma idéia?

Graças.

Foi útil?

Solução

Vou tomar um palpite aqui e dizer que você não está usando sessões persistentes na produção e você tiver vários servidores web. Mas no desenvolvimento você tem apenas um servidor. Você está usando o balanceamento de carga e de vez em quando você vai ser chutado para um servidor diferente com uma machinekey diferente em sua maching.config. App faz boom.

Ou isso não é de todo. :)

Se for o problema, você pode desativar o viewstate ou sincronizar as chaves no seu machine.config eo problema deve ir embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top