これが私の現在の質問です:
以下の回答によると、私の問題(以下で説明)はASP.NETワーカープロセスのリサイクルが原因であると推測しています。制限のため、InProcセッションストレージを使用していますが、移動する可能性はほとんどありません。すべてのセッションオブジェクトがシリアル化可能な他のタイプのストレージの場合。ただし、ワーカープロセスが頻繁にリサイクルされる理由はわかりません。私が知る限り、アプリディレクトリ内のファイルは変更されておらず、IISのオプションはこれは、プロセスが1,740分ごとにのみリサイクルされることを意味します。これは、実際のセッション損失よりもはるかに少ない頻度です。だから、私の質問は、ASP.NETワーカープロセスがリサイクルされる原因となる可能性のあるさまざまなケースは何ですか?
これが私の最初の質問です:
ASP.NETWebアプリケーションで発生する再現が難しい問題があります。アプリケーションには、ロードされ、いくつかのセッション変数を初期化する1つのメイン.aspxページがあります。このページは、ASP.NET AjaxSys.Net.WebRequest
クラスを使用して、別の.aspxページに繰り返しアクセスします。このページは、セッション変数を使用してデータベースクエリを実行し、メインページを更新します(メインページが再要求されることはありません)。
場合によっては、ページを一定期間使用した後、メインページで作成されたセッションがサブページに適切に引き継がれるHTTP要求が成功すると、要求の1つが新しいASP.NETセッション(すべてのセッション)を作成するように見えます。変数が失われ(コードで例外がスローされるため)、動的に要求されたページで新しいセッションIDが報告されます。つまり、突然、メインページがサーバーから切断されます。サーバーに関する限り、ユーザーはログインしなくなります。
セッションのタイムアウトではないことはほぼ間違いありません。タイムアウト時間はばかげたものに設定されています。これが発生するまでにかかる時間は変動しますが、セッションがタイムアウトするほど長くなることはありません。定数は次のようになります。セッションタイマーを更新します。Sys.Net.WebRequests
では、HTTP要求がASP.NETセッションとの接続を失う原因となる他に何が起こっている可能性がありますか?残念ながら、これが発生したときにネットワークトラフィックをスニッフィングしていないか、ASP.NETセッションCookieがスタックしていないかどうかを確認していました。