Что является эквивалентом IISReset, если я хочу использовать Microsoft.Web.Administration - PullRequest
3 голосов
/ 30 января 2012

Может показаться, что в этом есть нечто большее, чем просто итерация ApplicationPools и вызов для них Recycle (). Как наиболее точно имитировать IISReset программно (из .Net), не прибегая к вызову оболочки?

И я полагаю, что наиболее важно: есть ли вещи, которые IISReset делает, которые не могут быть выполнены с помощью инструментов, доступных в пространстве имен Microsoft.Web.Administration?

1 Ответ

1 голос
/ 07 марта 2014

Вы можете использовать System.ServiceProcess.ServiceController (получил идею из этого ответа ), запустив или остановив следующие службы:

-Windows Service Activation Service (WAS)
-World Wide Web Publishing Service (W3SVC)

Вот код, который сделает эту работу:

//stop iis (like running "IISReset /Stop")
ResetService("WAS", false);
ResetService("W3SVC", false);

//start iis (like running "IISReset /Start")
ResetService("WAS", true);
ResetService("W3SVC", true);

private static void ResetService(string name, bool start)
{
    using (var service = new System.ServiceProcess.ServiceController(name))
    {
        if (start && service.Status == ServiceControllerStatus.Stopped)
        {
            service.Start();
        }
        else if (!start && service.Status == ServiceControllerStatus.Running)
        {
            service.Stop();
        }
    }
 }

Что касается других команд IISReset, вы можете легко запрограммировать время ожидания. И чтобы перезагрузить компьютер, проверьте этот ответ . Дайте мне знать, если вам нужно больше деталей.

Но если вам не достаточно вечеринки, вы всегда можете выполнить сценарии Power Shell в C #, используя эту технику (довольно просто, если вам просто нужно закончить).

...