Есть ли управляемый API для управления IIS 8?

В IIS7 вы могли использовать dll Microsoft.Web.Administration для управления IIS.

Я добавил эту ссылку к моему проекту, однако, выполнив следующие результаты кода в NotImplementedException at site.Stop():

using (var server = new ServerManager())
{
    var site = server.Sites.FirstOrDefault(s => s.Name == instanceName);
    if (site != null)
    {
        site.Stop();
    }
}

Есть ли обновленная версия этого API или альтернативный метод для управления IIS из .Net?

Я бы предпочел не использовать WMI или должен появиться экземпляр appcmd, если это вообще возможно.

Ответ 1

Я только что протестировал следующий фрагмент на IIS 8 и 7 (используя 7.9.0.0 из GAC для Windows 8 и 7.0.0.0 из nuget для машины 2008 R2 соответственно)

и у меня нет проблем с остановкой сайта:

var manager = new ServerManager();
manager.Sites[0].Stop();
manager.Dispose();

Единственное, что я должен был сделать, - это запустить Linqpad в качестве администратора, чтобы заставить это работать. Возможно, это ваша проблема? Windows 8/Server 2012 не дает вам доступ к Администратору автоматически, если это не подтверждается вашим выражением. Я считаю, что это относится и к 7/2008 R2, но неуместно, поскольку вы явно помечены для IIS8 (UAC ftw!)

Ответ 2

Убедитесь, что вы включили "олицетворять", и вы назначаете пользователю и паролю выданного выражения в файле web.config правильную информацию о администраторах. Это облегчит любую дальнейшую проблему.

В web.config добавьте этот оператор, если он уже не является.

<identity impersonate="true" userName="LOCALMACHINE\ADMINUSER" password="PASSWORD" />

Также убедитесь, что в IISManager вы включили олицетворение ON "включено", а анонимная аутентификация отключена "отключена".