Есть ли управляемый 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 "включено", а анонимная аутентификация отключена "отключена".