Я пишу сценарий powershell для создания и настройки ряда веб-сайтов и виртуальных каталогов. Я использую сборку .NET Microsoft.Web.Administration. Я создал новое приложение на веб-сайте по умолчанию и добавил новый виртуальный каталог, и все это работает хорошо. Сейчас я пытаюсь настроить параметры аутентификации для виртуального каталога. Я делаю следующее в powershell:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$oIIS = new-object Microsoft.Web.Administration.ServerManager
$oWebSite = $oIIS.Sites["Default Web Site"]
$oApp = $oWebSite.Applications["/MyApp"]
$oConfig = $oApp.GetWebConfiguration()
$oAnonAuth = $oConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication")
$oAnonAuth.SetAttributeValue("enabled", "False")
Однако команда SetAttributeValue выдает мне следующую ошибку:
"Этот раздел конфигурации нельзя использовать по этому пути. Это происходит, когда раздел заблокирован на родительском уровне. Блокировка выполняется либо по умолчанию (overrideModeDefault =" Deny "), либо устанавливается явно с помощью тега местоположения с помощью overrideMode =" Запретить "или наследие allowOverride =" false "
Из того, что я читал в другом месте, есть некоторые предложения изменить файл XML для приложения, чтобы разрешить переопределение. Я не хочу этого делать - есть ли способ программно разблокировать конфигурацию, чтобы я мог ее изменить? Я вообще не хочу вводить пользователя в этот процесс ..
Спасибо за любую помощь,
Al.
Нашел ответ, который искал, но будучи новым пользователем, я не могу ответить на свой вопрос в течение 24 часов.
Я думаю, что нашел код ниже на этом сайте, но с тех пор моя машина перезагрузилась, поэтому я потерял страницу. Тем не менее, кажется, что работает следующее:
#
# Allow overriding of the security settings.
#
$oGlobalConfig = $oIIS.GetApplicationHostConfiguration()
$oConfig = $oGlobalConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Default Web Site/mySite")
$oConfig.OverrideMode="Allow"
$oIIS.CommitChanges()
#
# Following the commit above, we need a new instance of the configuration object, which we can now
# modify.
#
$oGlobalConfig = $oIIS.GetApplicationHostConfiguration()
$oConfig = $oGlobalConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Default Web Site/mySite")
$oConfig.SetAttributeValue("enabled", "False")
$oIIS.CommitChanges()