1

IIS サーバー上のすべてのアプリ プール/アプリに関する情報を提供する Web 監視アプリを作成しています。C# で、IIS アプリケーションが実行されているかどうかを、実行されていない場合は実行せずにプログラムでチェックする方法を探しています。

これが私が見つけたものです...

  1. アプリケーションが実行中で、アクティブなセッションが 1 つ以上あります。
  2. すべてのセッションが切断されました...アプリケーションはまだ「実行中」で、アプリ プールのワーカー プロセスが実行中です。
  3. IIS によって決定されたある時点で、最終的に Application_End が実行されますが、アプリケーション プールのワーカー プロセスはまだ実行されています。
  4. 20 分後、アプリケーション プールのワーカー プロセスは非アクティブなため、最終的にシャットダウンします。

私が困っているのは#3と#4の間です。アプリケーションは終了しましたが、アプリケーションに Http Request を送信しようとすると、自動的に起動します。アプリケーションを再起動せずに、アプリケーションが終了したかどうかをプログラムで判断する方法を探しています (ワーカー プロセスがまだシャットダウンを待っている間)。

私が何について話しているのかわからない場合は、さらに詳細を提供することができます。

よろしく、ジェレミー

4

3 に答える 3

1

MSDNでこれを見つけました

public bool CheckIISRunning()
  {
     ServiceController controller = new ServiceController("W3SVC");
     return controller.Status == ServiceControllerStatus.Running;
  }

これを機能させるには、System.ServiceProcess を参照として追加する必要があります。

于 2011-03-18T09:38:40.090 に答える
0

Microsoft は、IIS アプリケーション プールを (プロセス ID で) 識別するための VBScript ファイルを作成しました。Google で「iisapp.vbs」を検索すると、正しい方向に進むはずです。

注: Windows Server 2008 で動作することを 100% 確信しているわけではありませんが、2003 では動作します。

于 2009-09-14T13:03:50.760 に答える
0

IIS7 ではappcmd apppool /?を使用できます。どのような可能性があるかを確認します。

于 2009-09-14T13:14:19.727 に答える