Для IIS6 я бы использовал пространство имен System.DirectoryServices
, которое является управляемой оболочкой для ADSI. Я считаю, что это проще в использовании по сравнению с работой с поставщиками IIS WMI.
Для IIS7, и, как Предложено , я бы использовал новый API администрирования управляемого кода IIS 7 (Microsoft.Web.Administration
и др.). В IIS7 можно использовать компоненты совместимости IIS6, которые поддерживают API-интерфейсы ADSI старого стиля для потребителей (но являются оболочкой для новых компонентов IIS7), и они в основном работают.
Однако у вас возникают проблемы с оболочками ADSI. Например, они не знают свойств сопоставления обработчиков (аналогично карте сценариев IIS6), таких как preConditions
, которые, например, позволяют нескольким версиям определений сопоставления обработчиков ASP.NET размещаться на одном сайте или в одном приложении. Уровень совместимости ADSI создаст объекты, известные как AboMapperCustom
объекты, которые неоптимальны по своей конфигурации и не знают об этих новых функциях.
Наличие двух кодовых баз (одна для IIS6 и одна для IIS7) может показаться большой работой, но, честно говоря, это не так уж плохо. Я работаю на хостера, прошел этот путь, и мы укусили пулю и решили, что сохраним старый код IIS6, но начнем заново с IIS7.