Каждый раз, когда я добавляю сопоставление обработчика для веб-сайта в диспетчере IIS7, он всегда добавляет обработчик в локальный web.config
файл.
Есть ли способ сказать менеджеру, чтобы он только добавил отображение обработчика в конфигурацию сайта в applicationHost.config
, например:
<location path="Test Site">
<system.webServer>
<handlers>
<clear />
<add
name="PHP-FastCGI"
path="*.php" verb="GET,HEAD,POST"
modules="FastCgiModule"
scriptProcessor="c:\php\php-cgi.exe"
resourceType="Either"
/>
<-- Other handler mappings here -->
</handlers>
<security>
<authentication>
<anonymousAuthentication
enabled="true"
userName="i_test"
password="[enc:AesProvider:snipped:enc]"
/>
</authentication>
</security>
</system.webServer>
</location>
Я знаю, как это сделать, используя appcmd
используя /commit:apphost
switch, но было бы неплохо добиться этого через пользовательский интерфейс.
Диспетчер IIS целенаправленно устанавливает настройку на минимально допустимом уровне. Поскольку вам разрешено иметь этот набор в файле web.config сайта, он всегда будет применять его там.
Сам IIS Manager не дает вам выбора, где его установить. Причина в том, что это быстро запутает и запутает обычного администратора, поскольку параметр в applicationHost.config будет проигнорирован, если он также установлен в web.config. Таким образом, самый чистый способ гарантировать отсутствие путаницы - это применять его на самом низком допустимом уровне.
Решение (помимо appcmd или непосредственного редактирования applicationHost.config) заключается в использовании редактора конфигурации из пакета администрирования IIS (он устанавливается по умолчанию с IIS 7.5 на WS08 R2). Это позволяет вам выбрать, где вы хотите применить настройки.
На самом деле, для полноты, хотя обычно это нецелесообразный вариант для обработчиков, вы можете отключить делегирование для обработчиков для этого сайта или сервера. Затем IIS Manager установит его в applicationHost.config.