ВНИМАНИЕ!Используя этот подход, мы увидели, казалось бы, случайные проблемы, такие как исключения «неподдерживаемых операций», сбой при добавлении / удалении привязок HTTPS, сбой при запуске / остановке пулов приложений при работе в IIS Express и другие проблемы.Неизвестно, связано ли это с IIS, как правило, с ошибками или с неортодоксальным подходом, описанным здесь.В целом, у меня сложилось впечатление, что все инструменты для автоматизации IIS (appcmd, Microsoft.Web.Administration, PowerShell, ...) работают нестабильно и нестабильно, особенно в разных версиях ОС.Хорошее тестирование желательно (как всегда)!
Стандартный пакет Microsoft.Web.Administration
, установленный из NuGet, работает нормально.Не нужно копировать какие-либо системные DLL.
Очевидное решение из официальной документации также отлично работает:
ServerManager iisManager = new ServerManager(@"C:\Windows\System32\inetsrv\config\applicationHost.config");
Это работает, даже если вы выполняете вышеуказанное из пула приложений IIS Express,Вы все равно увидите конфигурацию «настоящего» IIS.Вы даже сможете добавлять новые сайты, если ваше приложение запускается как пользователь с разрешением на это.
Обратите внимание, однако, что конструктор выше задокументирован как «Только для внутреннего использования Microsoft»:
https://msdn.microsoft.com/en-us/library/ms617371(v=vs.90).aspx