IIS で Web サイトを構築する方法を知っている人は多いかもしれませんが、関連するサーバーログをどこで見つけるかを知らない人がいます。答えはイベントビューアー(event viewer)です。

Event Viewer
開くと、Web Server 関連のイベントや、サイトの停止理由などを確認できます。サイトがデプロイされたばかりで、Runtime に問題がある場合(パッケージに.net4.5 CLR アプリケーションプールが必要だが、プログラムが.net 6 である場合など)、Serilog などのパッケージではこの現象を観察できないことがあります。その場合は、.NET EventLog にアクセスして、サイトの強制終了などのイベントを確認できます。
Application Pool メカニズム
下の画像に表示されているサイト停止イベントは、IIS(Internet Information Services)の警告メッセージであり、アプリケーションプール(Application Pool)内のワーカープロセス(worker process)がアイドル時間が長すぎたために閉じられたことを示しています。

IIS のデフォルトでは、アプリケーションプールのアイドルタイムアウト時間は 20 分に設定されています。ワーカープロセスがこの期間内にリクエストを処理しない場合、システムリソースを節約するために IIS によって自動的に閉じられます。
この場合、IIS は新しいリクエストの処理を継続するために、必要に応じて新しいワーカープロセスを起動します。
アイドル状態が一定時間続いた後にアプリケーションプールが閉じられないようにしたい場合は、IIS でアプリケーションプールのアイドルタイムアウト設定を調整するか、0 に設定することで、ワーカープロセスが自動的に閉じられないようにすることができます。
アプリケーションがリクエストを処理するのに時間がかかる場合(大量のデータを処理したり、複雑なアルゴリズムを実行したりする場合など)、リクエストの処理中に自動的に閉じられないように、アプリケーションプールの構成を調整する必要があることに注意してください。
IIS でアプリケーションプールのアイドルタイムアウト設定を調整するか、0 に設定するには、次の手順を実行します。
IIS マネージャーコンソールを開き、アプリケーションプールを選択し、調整したいアプリケーションプールを右クリックして、「詳細設定」を選択します。

「プロセスモデル」セクションを見つけ、下の「アイドルタイムアウト (分)」設定項目までスクロールします。

アイドル時間を希望の値に設定するか、0 に設定します。0 は、ワーカープロセスが自動的に閉じられないことを意味します。
「OK」ボタンを押して設定を保存します。
アプリケーションプールのアイドルタイムアウトを設定すると、アプリケーションプール内のワーカープロセスはアイドルタイムアウトのために自動的に閉じられません。設定するアイドル時間の長さは、アイドル時間が短すぎたり長すぎたりしてワーカープロセスが正常に動作しなくなるのを避けるために、アプリケーションが必要とする処理時間に応じて決定する必要があることに注意してください。
Task Scheduler タスクスケジューラ
IIS 設定の調整以外にも、Windows に組み込まれているタスクスケジューラを使用して、シャットダウンの Event ID を Web ページ再起動の Trigger として利用することもできます。Web ページを開くことでもプログラムを再起動できるためです。
タスクスケジューラを開く
基本タスクの作成をクリック

- タスクの説明を入力

- イベントトリガーを選択

- イベントを選択

- トリガー時に実行する手順を選択します。ここではプログラムの開始を選択します

- 実行するプログラムを選択します。ここでは自作の Bat ファイルを選択します

- 完了!