5

これは、特にASP.NETで長時間作業した後は、ばかげた/つまらない質問になる可能性があります:)が、確認する必要があります。

セッション(つまりASP.NETセッション)をアプリケーション(アプリインスタンス/アプリドメイン/アプリケーション変数)よりも長持ちさせることは可能ですか?

つまり、Global.asaxでApplication_Endが呼び出された場合、アクティブなセッションがなくなることを示していますか?新しいリクエストがあると、Application_Startの後に新しいSession_Startが続きますか?

セッションは常にInProcであるとは限らないことに注意してください。セッションは、状態サーバーまたはSQLサーバーにある可能性があります。

4

2 に答える 2

5

デフォルトのInProcセッション状態では、最後のセッションが期限切れになるとアプリケーションが終了し、その時点でアプリケーションが終了しApplication_Endます。このシナリオでは、全体appDomainが破棄され、すべてのメモリが解放されます。セッションはメモリに保持されるため、この時点で完全に破棄されるため、アプリケーションの存続期間を超えて存続することはできません。

セッションが別のマシンで使用されている場合、Sql ServerまたはState Serverセッションが別のマシンに保存されている場合、アプリケーションが破棄されても、セッションは存続できます。次に、クライアントは元のセッションCookieをブラウザに保持するため、次にサイトにアクセスしたときにセッションが再開sessionidされ、既存のセッションを識別するために使用されます。

于 2011-09-07T22:54:39.623 に答える
4

はい、SQL Serverに状態を設定すると、アプリケーションは再起動できますが、セッション状態は維持されます。

于 2011-09-07T22:54:15.303 に答える