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