この記事は、一部のフォルダーがウイルス対策ソフトウェアによって除外されていない場合に、ASP.NET アプリケーションの AppDomain
がアンロードされる可能性がある問題を解決するのに役立ちます。
元の製品バージョン: ASP.NET、.NET Framework 4.8、4.7、4.6、4.5.2、3.5 Service Pack 1
元の KB 番号: 3126034
まとめ
ASP.NET アプリケーションでは、特定のフォルダーをウイルス対策スキャンから除外する必要があります。 そうでない場合、スキャンによって不注意で AppDomain
アンロードが発生する可能性があり、これによりパフォーマンスの問題が発生します。
ASP.NET では、 ReadDirectoryChangesW
Win32 関数を使用してディレクトリとファイルを監視します。 次のシナリオでは、ASP.NET AppDomain
クラスがアンロードされます。
アプリケーションの物理ルート パスとそのすべてのサブディレクトリで、サブディレクトリ名の変更または削除が監視されます。 これらの変更のいずれかが発生した場合、
AppDomain
はアンロードされます。アプリケーション ルート フォルダーの
bin
、App_Code
、App_WebReferences
、App_GlobalResources
、およびApp_Browsers
サブディレクトリは、作成、削除、名前変更、ACL の変更、最終書き込み時刻への変更、およびサイズの変更について監視されます。 これらの変更のいずれかが発生した場合、AppDomain
はアンロードされます。machine.config
ファイルとルート web.config ファイルは、変更を監視します。 これらのファイルのいずれかを変更すると、AppDomain
がアンロードされます。親アプリケーションの web.config ファイルが監視されます。 このファイルを変更すると、
AppDomain
がアンロードされます。アプリケーション ルートの web.config ファイルが監視されます。 このファイルを変更すると、
AppDomain
がアンロードされます。一時 ASP.NET ファイル フォルダーのハッシュ サブディレクトリにある
hash.web
ファイルが監視されます。 この監視は、ClientBuildManager
とランタイムBuildManager
の両方がアプリケーション ファイルを更新する開発シナリオをサポートするために追加されました。 ビルド マネージャーは 2 つ存在するため、同期を維持する必要があり、その目的のためにhash.web
ファイルが使用されます。アプリケーションの任意のサブディレクトリにある web.config ファイルが監視されます。 このファイルを変更すると、
AppDomain
がアンロードされます。各仮想サブディレクトリの
App_LocalResources
サブディレクトリは、作成、削除、名前変更、ACL の変更、最終書き込み時刻への変更、サイズの変更を監視します。 これらの変更のいずれかが発生した場合、AppDomain
はアンロードされます。
監視対象のファイルとフォルダーに基づいて、ウイルス対策スキャンからの除外には次のディレクトリをお勧めします。
- ASP.NET アプリケーションのルート ディレクトリとそのすべてのサブディレクトリ。
- .NET Framework 構成ファイル ディレクトリ。 これは、.NET Framework のバージョンと、ASP.NET アプリケーションが 32 ビット プロセスと 64 ビット プロセスのどちらで実行されているかによって異なります。
- ASP.NET アプリケーションの親アプリケーションのルート ディレクトリ。
- [一時 ASP.NET ファイル] フォルダー。
また、次の IIS ディレクトリを、ASP.NET アプリケーションのウイルス対策スキャンから除外することをお勧めします。
%systemroot%\System32\inetsrv\config
%systemdrive%\inetpub\temp
詳細
AppDomain
アンロードを回避するには、FCNMode
を無効にします (FCN はファイル変更通知を表します)。
FCNMode
を無効にする方法の詳細については、Web サイトASP.NET 2.0 に接続されているアプリケーションが応答を停止しているように見える場合がありますを参照してください。 ただし、FCNMode を無効にすることはお勧めしません。