Как изменить атрибут раздела 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, которое позволит пользователям определять его в другом месте, если это разрешено по определению.