Проверьте, работает ли приложение IIS, не вызывая его - PullRequest
1 голос
/ 09 сентября 2009

Я пишу приложение для веб-монитора, которое предоставляет информацию обо всех пулах / приложениях на моем сервере IIS. Я ищу способ в C # программно проверить, работает ли приложение IIS, не вызывая его запуска, если это не так.

Вот что я нашел ...

  1. приложение запущено, активен один или несколько сеансов.
  2. все сеансы прерваны ... приложение все еще "работает", рабочий процесс пула приложений запущен.
  3. В определенный момент, определенный IIS, Application_End наконец выполняется ... однако рабочий процесс пула приложений все еще выполняется.
  4. Через 20 минут рабочий процесс пула приложений наконец завершается из-за неактивности.

У меня проблемы между № 3 и № 4. Приложение завершилось, но если я попытаюсь отправить Http-запрос в приложение, оно автоматически запустится. Я ищу способ программно определить, завершилось ли приложение (пока рабочий процесс все еще активен в ожидании завершения работы) без перезапуска приложения.

Я могу попытаться предоставить более подробную информацию, если вы не уверены, о чем я говорю.

С уважением, Джереми

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Я нашел это на MSDN

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

Чтобы это работало, вам нужно иметь System.ServiceProcess добавлен в качестве ссылки.

0 голосов
/ 14 сентября 2009

В IIS7 вы можете использовать appcmd apppool /? , чтобы увидеть, какие возможности доступны.

0 голосов
/ 14 сентября 2009

Microsoft создала файл VBScript для идентификации пулов приложений IIS (по идентификатору процесса). Если вы ищете "iisapp.vbs" в Google, он должен указать вам правильное направление.

Примечание. Я не уверен на 100%, что он будет работать с Windows Server 2008, но работает с 2003.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...