0

コードは次のようになります。

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

ボタンを数回クリックすると、数回試行した後、ページのビューステート値が失われますが、常にそうとは限りません。したがって、ここでの主な問題は、ビューステートが常に正しく機能していないという問題のようです。何か案が?

ありがとう。

4

1 に答える 1

1

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

または、これはまったくそうではありません。:)

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

于 2008-11-14T18:14:35.510 に答える