ビューステート/機能/サーバーと開発サーバーとの不一致
質問
コードは次のようになります:
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のキーを同期すると、問題は解決します。