ビューステート/機能/サーバーと開発サーバーとの不一致

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

何らかの理由で、ライブサーバー上で一貫して動作しません。 それは常に私のローカル開発マシンとSOMETIMESで動作することに留意してください (3回の試行のうち約1回)はライブマシンで動作します。ライブサーバーで失敗したとき ページがリロードされ、すべてのビューステートが失われます。

webconfigファイルにデフォルトのエラーキャッチがあり、ページがリダイレクトされない エラーページ。

一貫したバグのトラブルシューティングは簡単ですが、このようなことはそうではありません。

このページをいつ機能させるか、いつ機能させないか、および/またはその理由についての考え 動作に失敗すると、ビューステートは保持されませんか? ローカルマシンで同じ問題が発生しないのはなぜですか?

2つの関数をマージして、外部関数の呼び出しが原因であるかどうかを確認しました 問題ですが、残念ながら何も変わりませんでした。また、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;        
}

ボタンを数回クリックすると、ページのビューステート値が失われます 数回試してみましたが、常にではありません。 したがって、ここでの主な問題は、ビューステートの問題ではなく、 常に正しく動作しています。アイデアはありますか?

ありがとう。

役に立ちましたか?

解決

ここでは大まかな推測をしますが、実稼働環境ではスティッキーセッションを使用しておらず、複数のWebサーバーがあります。しかし、開発ではサーバーは1つしかありません。負荷分散を使用しており、maching.configで異なるマシンキーを使用して別のサーバーにキックされることがよくあります。アプリがブームになります。

または、これはまったく違います。 :)

それが問題である場合、viewstateをオフにするか、machine.configのキーを同期すると、問題は解決します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top