Как изменить атрибут раздела allowDefinition с помощью appcmd в IIS 7?

Можно ли использовать appcmd для изменения значения allowDefinition? В частности, я пытаюсь включить изменения в модуль httpCompression на уровне приложения.

Изменение applicationHost.config путем изменения следующей строки:

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

Для

<section name="httpCompression" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />

позволяет мне выполнить следующие команды appcmd:

appcmd set config "website name" /section:httpCompression /noCompressionForProxies:false
appcmd set config "website name" /section:httpCompression /noCompressionForHttp10:false

Однако мне нужно решение, которое не полагается на ручное редактирование applicationHost.config

Ответ 1

Моя проблема: мне пришлось изменить anonymousAuthentication с False на True. Когда я это сделал: appcmd set config websitename/section: anonymousAuthentication/enabled: True

Ошибка: Ошибка конфигурации Эта конфигурация не может использоваться на этом пути. Это происходит, когда секция заблокирована на родительском уровне. Блокировка по умолчанию (overrideModeDefault = "Deny" )...

Чтобы разблокировать, выполните следующие действия: appcmd unlock config/section:?. В этом списке вы найдете раздел. Затем введите:

appcmd unlock config/section:system.webserver/security/authentication/anonymousauthentication

Thats it...:)

Ответ 2

Попробуйте использовать %windir%\system32\inetsrv\appcmd unlock config -section:*sectionName*. См. http://blog.donnfelker.com/2007/03/26/iis-7-this-configuration-section-cannot-be-used-at-this-path/

На самом деле мне пришла в голову необходимость сделать это после публикации этого ответа.

%systemroot%\System32\inetsrv\appcmd.exe unlock config /section:system.WebServer/[rest of the path to config section you need to edit]

Ответ 3

Одно большое предупреждение: НИКОГДА не изменяйте allowDefinition, это важный параметр, который обычно существует по какой-либо причине, например, может быть, даже если вы установите его в определенном каталоге или приложении, это не сработает, поэтому разработчики указали это.

Поэтому, пожалуйста, никогда не изменяйте атрибут allowDefinition в определениях разделов. С другой стороны, вы можете изменить overrideModeDefault, которое позволит пользователям определять его в другом месте, если это разрешено по определению.