さて、少しいじった後、私が抱えていた問題を最終的に特定しました。
初期化時にさまざまなオブジェクトを初期化し、それらにデータを入力する Web サイトがあります。これには、異なるページのデータセットとカスタム コントローラーが含まれます。この問題は、私のサイトのすべてのページに一貫性のない影響を与えているようです。
最も詳細なエラーを使用します。コメント ボックスとデータで満たされたドロップダウン リストを動的に作成できるコメント ページがあります。初期ロードでは、コメント ボックスが 1 つだけ作成されます。ボタンをクリックすると、ポスト バックが発生し、すべてのコメント ボックスを含むリストに別のボタンが読み込まれ、追加のコメント ボックスが表示されます。
これで問題なく動作し、ispostback = true となり、リストのカウントが 1 つ増えます。これはすべて、iis の下の Windows 2012 サーバーでホストされています。Web サイトは SQL サーバーを介したセッション用に設定されており、セッションの制限は 20 分です。このサイトでは、1 か月間有効な Cookie を使用してメタデータを格納しています。ここで、5 分ほど待って (Web ページで非アクティブなままです)、もう一度ボタンを押すと、読み込みに時間がかかることがあり、ispostback が true になり、addbuttonclick に入ります。メソッドを実行して次のコメント ボックスをリストに追加し始めると、コメント ボックスの以前のデータが新しいコメント ボックスに読み込まれ、ここでエラーが発生します。コメントコントロールリストはどういうわけかクリアされ、エラーを受け取ったときのカウントは1です.つまり、サーバー...
同様の問題は、私が持っている他のページにも悩まされていますが、より多くのデータセットがクリアされています. どんな助けでも大歓迎です。
ページ読み込み時の初期化
if (!IsPostBack)
{
DataSet BudgetCodes = new DataSet();
BudgetCodes = WFlowWS.GetBudgetCodes();
commentControl.Clear();
//intialize comment control
this.CommentControl1.Ds = BudgetCodes;
this.CommentControl1.FillBudgetCode(this.CommentControl1.Ds);
if (commentControl.Count == 0)
{
commentControl.Add(this.CommentControl1);
}
}
btnaddadditionalComment クリック
protected void btnAddAdditionalCom_Click(object sender, EventArgs e)
{
try
{
try
{
commentControl.Add(LoadControl("~/WorkflowCommentControl.ascx") as WorkflowCommentControl);
}
catch (Exception exl)
{
Response.Write(exl.ToString() + "line 1");
Response.End();
}
try
{
Response.Write("ISPOSTBACK " + IsPostBack.ToString() + " COMMENT CONTROL COUNT : " + commentControl.Count().ToString() + " ");
commentControl[commentControl.Count() - 1].Ds = commentControl[(commentControl.Count() - 2)].Ds;
}
catch (Exception exl)
{
Response.Write(exl.ToString() + "line 2");
Response.End();
}
try
{
commentControl[commentControl.Count() - 1].FillBudgetCode(commentControl[commentControl.Count() - 2].Ds);
}
catch (Exception exl)
{
Response.Write(exl.ToString() + "line 3");
Response.End();
}
try
{
this.PanelComment.Controls.Add(new LiteralControl("<br/>"));
}
catch (Exception exl)
{
Response.Write(exl.ToString() + "line 4");
Response.End();
}
try
{
this.PanelComment.Controls.Add(commentControl[commentControl.Count() - 1]);
}
catch (Exception exl)
{
Response.Write(exl.ToString() + "line 5");
Response.End();
}
}
catch (Exception exl)
{
Response.Write(exl.ToString() + "line 6");
Response.End();
}
}
Cookie の有効期間は 1 か月、セッション タイムアウトは 30 分に設定されています。
セッション状態の設定はSQLサーバー、
接続文字列は次のとおりです (わずかに変更されています)
サーバー=tcp:90210.database.windows.net,1433;データベース=USState;ユーザー ID=Pirates;パスワード=ボート;Trusted_Connection=False;暗号化=True;接続タイムアウト=30;
タイムアウト 30 秒、接続再試行間隔 0、カスタム データベースの有効化がチェックされます。
Cookie 設定 モード: Cookie を使用 名前: ASP.NET_SessionId タイムアウト: 20
偽装にホスティング ID を使用するがチェックされている
アプリケーション プールの基本的な IIS 設定は次のとおりです。
.Net Framework v4.0.30319 マネージ パイプライン モード: 統合 [アプリケーション プールをすぐに開始] にチェックマークを付ける
各コメント コントロールをロードするページ ロードの最後にあるコード
for (int x = 1; x < commentControl.Count; x++)
{
this.PanelComment.Controls.Add(new LiteralControl("<br/>"));
this.PanelComment.Controls.Add(commentControl[x]);
}