0

さて、少しいじった後、私が抱えていた問題を最終的に特定しました。

初期化時にさまざまなオブジェクトを初期化し、それらにデータを入力する 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]);
        }
4

2 に答える 2