Как определить, включен ли ASP.NET в IIS 7 - PullRequest
19 голосов
/ 14 декабря 2010

Задача состоит в том, чтобы определить, включен ли 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.

Обновление

Спасибо за ответы.Разъясняя, что именно я хочу сделать, я извлекаю настройки из разных мест в конфигурации сервера в одно представление (только для чтения), чтобы показать, что необходимо настроить пользователю, чтобы программное обеспечение работало.

Одна из настроек, которую мне нужно ввести, это: IIS Config showing ASP.NET not installed

Одна из них выделена красным.

Мне не нужно манипулировать настройкой, просто воспроизведите ее.Я хочу посмотреть, установил ли пользователь флажок ASP.NET, когда он добавил роль IIS на сервер, как в этом примере, он явно не сделал.

Я хотел бы сделать это, посмотрев на что-тонадежнее в IIS, а не перечислять службы ролей, потому что я не хочу добавлять какие-либо зависимости от конкретной платформы в проверку, которая мне не нужна.Я не знаю, удастся ли когда-нибудь установить IIS7 на сервер, на котором нет инфраструктуры ролей / служб, но я бы предпочел не беспокоиться об этом.У меня также есть множество библиотек для работы с IIS.

Однако у меня также возникают проблемы с поиском, как вообще перечислить роли / сервисы, поэтому, если есть решение, которое включает в себя это,было бы, безусловно, полезно, и гораздо лучше, чем проверка побочного эффекта от наличия поставщика трассировки ASPNET.

К сожалению, если вы не нажмете кнопку ASP.NET, вы все равно можете получить модуль ManagedEngine вфайл IIS applicationHost.config, так что это не надежная проверка.Вы также можете сопоставить ASP.NET как фильтр isapi, поэтому их проверки недостаточно.Эти вещи особенно проблематичны в случае, когда ASP.NET был установлен, но удален.

Похоже, что лучшим решением было бы изучить службы ролей.Тем не менее, информация об API выглядит довольно редко, поэтому крик о помощи

.

Ответы [ 3 ]

16 голосов
/ 15 декабря 2010

Абсолютный способ узнать, проверили ли они это или нет, заключается в поиске следующего раздела реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\Components

Там вы должны увидеть два значения: 1, ASPNET и NetFxEnvironment и NetFxExtensibility. Этот раздел реестра является ключом установки IIS, который содержит все компоненты, которые были включены в IIS.

2 голосов
/ 14 декабря 2010

Определение того, является ли asp.net даже установленной функцией (обязательным условием для ее включения), можно выполнить с помощью PowerShell, что подразумевает наличие .net api для нее, если вы копаете достаточно сильно. Методы PowerShell:

Import-Module servermanager
Get-WindowsFeature web-asp-net

Который вернет объект типа Microsoft.Windows.ServerManager.Commands.Feature. Свойство installed является логическим и указывает, установлена ​​ли эта функция.

0 голосов
/ 14 декабря 2010

Так ты хочешь легкий путь?Создайте красивую симпатичную страницу .aspx, которая будет отображаться в виде HTML с блоком ошибок в div в заполнителе с надписью «Вам нужно установить ASP.NET» и изменить его на устанавливаемой ASP.NET, вместо этого сказать «ASP.NET установлен"и затем просто запустите эту веб-страницу в браузере по умолчанию после копирования ее в каталог, указанный в IIS как сайт *: 80 (или создайте сопоставление каталогов в IIS программным путем, изменив XML и затем удалив его позже)

Может быть не самым элегантным, но он гарантирует, что тестирование покажет, какие функции действительно установлены, а какие есть в XML-файле.


Потому что это будет кричать "сделай это ленивым невежественным путем"Я напомню вам, что единственный способ узнать в javascript, какие функции я могу использовать, - это проверить их, прежде чем я попытаюсь их использовать, или предположить, что они есть, и посмотреть, как они взорвутся.Я хочу сказать, что не важно, что сообщается в файле, важно, что вы можете использовать.То, что C: \ Windows \ Micrsoft.Net \ Framework \ v3.xxxxxxxx существует и имеет файлы, не означает, что DLL зарегистрированы в GAC, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...