web-dev-qa-db-ja.com

IISすべての設定が構成されているにもかかわらず、アプリケーションの初期化が実行されていません

最終的な目標は、アプリプールがリサイクルされるたびに(サイトの更新をリリースするたびに発生するはずです)、サイトに1回アクセスして「ウォームアップ」するようにすることです。通常、リサイクル後の最初のアクセスには2.5秒かかり、その後のアクセスには0.5秒しかかからないため、更新のたびに1回アクセスする必要があります。それを自動化したいのですが、Windowsアプリケーションの初期化機能がその方法のようです。

問題は、この機能を有効にすると、アプリプールを再起動したとき(または何かを再起動したとき)に、サイトへのアクセスのアクセスログが表示されないことです。アプリケーションの初期化機能がまったく機能していないようです。システムイベントログにエラーが表示されない、またはさらにトラブルシューティングする方法がありません。


これが環境です:

  • Windowsサーバー2019
  • IIS 10(必要なすべての役割/機能を含む)
  • ASP.NET Core 3.1


これが私が構成したものです( IIS 8.0アプリケーションの初期化 ガイドを使用):

  • 「アプリケーションの初期化」機能/役割がWindowsにインストールされている
  • アプリプール:
    • .NET CLRバージョン:マネージコードなし(v4.0も試しました)
    • マネージパイプラインモード:統合
    • アプリケーションプールをすぐに開始:有効
    • 開始モード:AlwaysRunning
    • アイドルタイムアウト(分):0
    • 通常の時間間隔(分):0
  • 地点:
    • HTTPSのみ(HTTPの追加も試しました)
    • プリロード有効:True
  • applicationHost.confファイルsystem.webServer/applicationInitializationセクション: system.webServer/applicationInitialization


トラブルシューティング:

  • サイト/アプリプール/サービス/サーバーを再起動しました
  • system.webServer/applicationInitializationセクションでさまざまな設定を試し、web.configに移動しました
  • ApplicationHost.configファイルのglobalModulesセクションにこれが含まれていることに気付きましたが、そのフォルダーを参照したところ、何もありませんでした。私はそこにwarmup.dllを含むいくつかのdllファイルを期待していました:
<add name="ApplicationInitializationModule" image="%windir%\System32\inetsrv\warmup.dll" />
2
Coder7862396

IISアプリケーション初期化機能とASP.NET Core 3.1サイトの間には互換性がないように思われます。これはまったく機能せず、トラブルシューティングの方法がないためです。 。

したがって、IISインプロセスホスティングを完全に削除し、代わりにHost Kestrel Windows Service Worker Service内 を削除することにしました。

0
Coder7862396

あなたのウェブサイトがデータベースを使用している場合、そこに問題がある可能性があります。データベースへの接続は、ほとんどの場合、最初のリクエストでのみ行われます。データベースバージョンのチェックはそのときにも行われます。一方、リサイクルの直後に接続がまだアクティブであることを確認します。アクティブでない場合は、プールから開始するようにしてください。これが役立つはずです。

(自動翻訳、スペルミスは無視してください)

0
mminetto