Incohérences entre viewstate / function / server et serveur de développement

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

  •  08-07-2019
  •  | 
  •  

Question

Le code ressemble à ceci:

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

Pour une raison quelconque, cela ne fonctionne pas systématiquement sur le serveur actif. Gardez à l'esprit que cela fonctionne TOUJOURS sur ma machine de développement local et PARFOIS (environ 1 essai sur 3) fonctionne sur la machine en direct. Quand il échoue sur le serveur live les rechargements de page et tous les états d'affichage sont perdus.

J'ai une erreur d'erreur par défaut dans mon fichier webconfig et la page n'est jamais redirigée vers le page d'erreur.

Les bogues cohérents sont faciles à résoudre, mais ce n'est pas le cas.

Toute idée de ce qui pourrait faire que cette page fonctionne parfois et parfois pas et / ou pourquoi l'état de vue ne sont pas conservés lorsqu'il ne fonctionne pas? Pourquoi le même problème ne se produit-il pas sur mon ordinateur local?

J'ai essayé de fusionner les deux fonctions pour voir si l'appel de la fonction externe était la cause le problème, mais cela n'a malheureusement rien changé. De plus, la valeur d’IsOK ne semble pas influencer le fait que je reçoive ou non le bogue.

J'ai supprimé tout le code de la fonction de chargement de page pour assurer le dépannage. correctement mais je reçois toujours le même problème.

Toute idée sera appréciée.

Edit: J'allais envoyer ceci tel quel mais j'ai décidé d'essayer ce qui suit:

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

Si je clique plusieurs fois sur le bouton, la page perd la valeur d'affichage après quelques essais mais pas toujours. Donc, la principale question ici semble être un problème avec le viewstate pas fonctionne correctement tout le temps. Une idée?

Merci.

Était-ce utile?

La solution

Je vais me lancer dans une conjecture sauvage et dire que vous n’utilisez pas de sessions persistantes en production et que vous avez plusieurs serveurs Web. Mais en développement, vous n’avez qu’un seul serveur. Vous utilisez l’équilibrage de charge et de temps en temps, vous êtes renvoyé à un serveur différent avec une clé de machine différente dans votre maching.config. App va boum.

Ou ce n'est pas ça du tout. :)

Si le problème se pose, vous pouvez désactiver Viewstate ou synchroniser les clés de votre machine.config. Le problème devrait disparaître.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top