Существует ли управляемый API для управления IIS 8?
в IIS7 вы могли использовать Microsoft.Web.Administration
dll для управления 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
если вообще возможно.
2 ответов
Я только что протестировал следующий фрагмент на 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!)
убедитесь, что "олицетворять" включен, и вы назначаете пользователя и пароль оператора олицетворения в интернете.config с правильной информацией администраторов. Это облегчит дальнейшие проблемы.
в интернете.config добавьте этот оператор, если он еще не их.
<identity impersonate="true" userName="LOCALMACHINE\ADMINUSER" password="PASSWORD" />
также убедитесь в IISManager, что вы включили олицетворение " включено "и отключили анонимную аутентификацию"отключено".