Я пытаюсь установить учетную запись пользователя домена как идентификатор ApplicationPool в IIS 8 (Windows 2012). При попытке сделать это с помощью консоли управления IIS я всегда получаю ошибку:
Значение не попадает в ожидаемый диапазон.
При попытке установить идентификатор с помощью appcmd.exe он терпит неудачу как при установке имени пользователя и пароля, так и при установке только пароля. Установка имени пользователя не является проблемой.
Попытка задать имя пользователя и пароль [НЕУДАЧНО]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username /[name='AppPoolName'].processModel.password:P4ssW0rd
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
Попытка задать только имя пользователя [УСПЕШНО]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
Попытка установить пароль после успешной установки имени пользователя [FAIL]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
Я добавил пользователя домена в группу IIS_IUSRS и разрешил ему «Входить в систему как служба».
Есть ли какие-нибудь предположения, что я могу делать неправильно?
решение1
СогласноКак настроить веб-приложение IIS, чтобы оно могло получить доступ к сетевому ресурсу без AD?
У меня была та же проблема, но я не мог ввести пароль в открытом виде, поэтому я копнул немного дальше и нашел эту статью: Пользовательский идентификатор пула приложений IIS: значение не попадает в ожидаемый диапазон
Ключевым шагом в диагностике является рассмотрение правильных событий:
Чтобы выяснить, как решить эту проблему, я зашел в просмотрщик событий. В журнале приложений ничего не было, поэтому я направился в Журналы приложений и служб => Microsoft => Windows => IIS-Configuration. Журналы здесь по умолчанию отключены, поэтому их нужно включить. (Чтобы сделать это, щелкните правой кнопкой мыши журнал и выберите Включить журнал.) После включения снова запустите попытку установить идентификатор и обновите представление (панель Действия или F5), и вуаля! Теперь у нас есть больше информации об ошибке. В результатах были две Ошибки (идентификаторы событий 42 и 43).
У меня были те же ошибки событий, что и в статье:
ID 42: Не удалось инициализировать провайдер шифрования 'IISWASOnlyAesProvider' в '\?\C:\windows\system32\inetsrv\config\applicationHost.config'. Проверьте конфигурацию.
ID 43: Не удалось зашифровать атрибут «Microsoft.ApplicationHost.AesProtectedConfigurationProvider».
Затем я сделал следующее:
- восстановить старую версию файла ConfigEncKey.key (в
c:\windows\System32\inetsrv\config
) - заменить
<configProtectedData><providers>
раздел на старый (вc:\windows\System32\inetsrv\config\applicationHost.config
)
Затем я снова могу задать пользовательский идентификатор для пула приложений.
решение2
Вы можете получить закрытый ключ с другого сервера и просто импортировать его на этот сервер, предварительно экспортировав ключ с другого работающего сервера IIS: C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -px "iisWasKey" "C:\temp\AESKeys.xml" -pri
Во-вторых, вы можете восстановить этот ключ на сломанной машине (скопируйте ключ на другой сервер и поместите его в то же место): C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -pi "iisWasKey" "C:\temp\AESKeys.xml"
В-третьих, вы редактируете файл c:\windows\system32\inetsrv\applicationhost.config и используете раздел configprotecteddata с известного рабочего сервера вместо того, который уже есть в этом файле.
Это будет выглядеть примерно так:
Если все пойдет хорошо, вы можете протестировать его, создав пул приложений, а затем перейти к расширенным настройкам и запустить его как DOMAIN\user или какой-либо другой нужный пользователь.
Тони Трус
решение3
Проверьте привязки для приложений, настроенных в этом пуле приложений, на наличие некорректных привязок, например, недопустимых символов, пробелов и т. д.
решение4
Попробуйте изменить /section:applicationPools
на /section:system.applicationHost/applicationPools
и добавить /commit:apphost
в конец
appcmd set config /section:system.applicationHost/applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd /commit:apphost