InProc セッション状態モード ASP.NET 使用すると、セッション データが失われます

この記事は、InProc セッション状態モードを使用するときにセッション データが失われる問題 ASP.NET 解決するのに役立ちます。

元の製品バージョン: ASP.NET
元の KB 番号: 324772

現象

ASP.NET Web アプリケーションのセッション データは、InProc セッション状態モードのランダムな間隔で失われるように見えます。

原因

クラスまたは Aspnet_wp.exe プロセス (または IIS 7.0 以降のバージョンで実行されるアプリケーションの W3wp.exe プロセス) がリサイクルされた場合 AppDomain 、セッション状態データは失われます。 一般に AppDomain 、 は、いくつかの要因に基づいて再起動されます。

  • さまざまな属性 (属性など) には、 memoryLimit 構成ファイルのセクションに <processModel> 特定の設定があります。
  • Global.asax または Web.config ファイルが変更されました。
  • Bin Web アプリケーションのディレクトリが変更されました。
  • ウイルススキャンソフトウェアは、いくつかの .config ファイルに触れました。

InProc セッション モードは、セッション状態がローカルに格納されていることを示します。 つまり、InProc セッション状態モードでは、Web アプリケーションの AppDomain ライフ オブジェクトとして格納されます。 このため、Aspnet_wp.exe (または IIS で実行されるアプリケーションの場合は W3wp.exe) または再起動時にセッション状態が AppDomain 失われます。

解決方法

この問題を回避するには、StateServer または SqlServer セッション状態モードを使用します。 ASP.NET では、セッション状態データを格納するための他の方法が提供されます。 StateServer モードと SqlServer モードでは、セッション状態は Web アプリケーションの に AppDomain 格納されません。

注:

要件に適したモードを決定するときは、各セッション状態モードに関連付けられている動作と問題を理解することが重要です。

状態

この動作は仕様です。

関連情報

ASP.NET セッション状態管理とその他の関連情報の詳細については、「 セッション状態」を参照してください。