最終的な目標は、アプリプールがリサイクルされるたびに(サイトの更新をリリースするたびに発生するはずです)、サイトに1回アクセスして「ウォームアップ」するようにすることです。通常、リサイクル後の最初のアクセスには2.5秒かかり、その後のアクセスには0.5秒しかかからないため、更新のたびに1回アクセスする必要があります。それを自動化したいのですが、Windowsアプリケーションの初期化機能がその方法のようです。
問題は、この機能を有効にすると、アプリプールを再起動したとき(または何かを再起動したとき)に、サイトへのアクセスのアクセスログが表示されないことです。アプリケーションの初期化機能がまったく機能していないようです。システムイベントログにエラーが表示されない、またはさらにトラブルシューティングする方法がありません。
これが環境です:
これが私が構成したものです( IIS 8.0アプリケーションの初期化 ガイドを使用):
system.webServer/applicationInitialization
セクション:
トラブルシューティング:
system.webServer/applicationInitialization
セクションでさまざまな設定を試し、web.configに移動しましたglobalModules
セクションにこれが含まれていることに気付きましたが、そのフォルダーを参照したところ、何もありませんでした。私はそこにwarmup.dllを含むいくつかのdllファイルを期待していました:<add name="ApplicationInitializationModule" image="%windir%\System32\inetsrv\warmup.dll" />
IISアプリケーション初期化機能とASP.NET Core 3.1サイトの間には互換性がないように思われます。これはまったく機能せず、トラブルシューティングの方法がないためです。 。
したがって、IISインプロセスホスティングを完全に削除し、代わりにHost Kestrel Windows Service Worker Service内 を削除することにしました。
あなたのウェブサイトがデータベースを使用している場合、そこに問題がある可能性があります。データベースへの接続は、ほとんどの場合、最初のリクエストでのみ行われます。データベースバージョンのチェックはそのときにも行われます。一方、リサイクルの直後に接続がまだアクティブであることを確認します。アクティブでない場合は、プールから開始するようにしてください。これが役立つはずです。
(自動翻訳、スペルミスは無視してください)