次の方法で共有


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

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

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

現象

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

原因

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

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

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

解決方法

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

Note

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

状態

この動作は仕様によるものです。

関連情報

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