Задача состоит в том, чтобы определить, включен ли ASP.NET в IIS7 надежным и правильным способом.
Включение/отключение выполняется в этом случае путем перехода на:
Server Manager ->
Roles ->
Web Server (IIS) ->
Remove Role Services ->
Remove ASP.NET
Естественное место для определения этого должно быть в файле applicationHost.config. Однако с включенным или отключенным ASP.NET у нас все еще есть доступный модуль ManagedEngine, и у нас все еще есть запись фильтра isapi в теге.
Лучшее, что я могу найти на данный момент, - проверить, есть ли <isapiCgiRestriction> тег включает aspnet_isapi.dll или что поставщик трассировки ASPNET доступен.
Однако они не обнаруживают присутствие конфигурации ASP.NET напрямую, просто побочный эффект, который может быть, возможно, перенастроен пользователем.
Я бы предпочел сделать это, изучив конфигурацию/настройку IIS, а не сама ОС, если это возможно, хотя перечисление ролей и служб на сервере может быть приемлемым, если мы можем гарантировать, что этот метод всегда будет работать, когда IIS7 б.
Обновление
Спасибо за ответы. Уточняя, что именно я хочу сделать, я вытаскиваю настройки из разных мест в конфигурации сервера в единое (только для чтения) представление, чтобы показать, что пользователь должен настроить для работы программного обеспечения.
Один из параметров, которые мне нужно внести, - это один:
Тот, который выделен красным цветом.
Мне не нужно манипулировать настройкой, просто воспроизведите ее. Я хочу узнать, проверил ли пользователь поле ASP.NET, когда они добавили роль IIS на сервер, так как в этом примере они явно этого не сделали.
Я хотел бы сделать это, посмотрев на что-то надежное в IIS, а не на перечисление сервисов роли, потому что я не хочу добавлять какие-либо зависимые от платформы зависимости от проверки, которая мне не нужна. Я не знаю, смогу ли когда-нибудь установить IIS7 на сервере, у которого нет инфраструктуры ролей/служб, но, предпочту, я бы не стал беспокоиться об этом. У меня также есть загрузка библиотек для очистки вокруг IIS уже.
Однако у меня также возникли проблемы с выяснением того, как перечислять роли/службы вообще, поэтому, если есть решение, которое включает в себя это, это, безусловно, будет полезно и намного лучше, чем проверка побочного эффекта Поставщик трассировки ASPNET.
К сожалению, если вы не проверите кнопку ASP.NET, вы все равно можете получить модуль ManagedEngine в файле applicationHost.config приложения IIS, чтобы он не был надежным. Вы также можете настроить ASP.NET как фильтр isapi, поэтому проверки их недостаточно. Эти проблемы особенно проблематичны в случае, когда ASP.NET был установлен, но был удален.
Похоже, что лучшим решением было бы изучить службы ролей. Однако информация API по этому поводу выглядит довольно редко, поэтому крик о помощи.