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