Я пытаюсь установить учетную запись пользователя домена как ApplicationPool Identity в IIS 8 (Windows 2012). При попытке сделать это с помощью консоли управления IIS я всегда получаю сообщение об ошибке:
Значение не попадает в ожидаемый диапазон.
При попытке установить удостоверение с помощью appcmd.exe не удается как команда, задающая имя пользователя и пароль, так и команда, устанавливающая только пароль. Установить имя пользователя не проблема.
Попытка установить имя пользователя и пароль [FAIL]:
>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 и разрешил ему «Войти в качестве службы».
Есть предложения, что я делаю неправильно?
Согласно Как настроить веб-приложение IIS, чтобы оно могло получать доступ к общему сетевому ресурсу без AD?
У меня была та же проблема, но я не мог ввести пароль в виде открытого текста, поэтому я копнул немного дальше и нашел эту статью: Пользовательский идентификатор пула приложений IIS: значение не попадает в ожидаемый диапазон
Ключевой шаг для диагностики - смотреть на правильные события:
Чтобы выяснить, как решить эту проблему, я вошел в программу просмотра событий. В журнале приложений ничего не было, поэтому я направился в Журналы приложений и служб => Microsoft => Windows => IIS-Configuration. По умолчанию журналы здесь отключены, поэтому их необходимо включить. (Для этого щелкните журнал правой кнопкой мыши и выберите Включить журнал.) После включения повторно запустите попытку установить идентификатор и обновите представление (панель действий или F5) и вуаля !, теперь у нас есть дополнительная информация. об ошибке. В результате было две ошибки (ID события 42 и 43).
У меня были те же ошибки событий, что и в статье:
ID 42: не удалось инициализировать поставщик шифрования IISWASOnlyAesProvider в папке \? \ C: \ windows \ system32 \ inetsrv \ config \ applicationHost.config. Пожалуйста, проверьте вашу конфигурацию.
ID 43: не удалось зашифровать атрибут Microsoft.ApplicationHost.AesProtectedConfigurationProvider.
Затем я сделал следующее:
c:\windows\System32\inetsrv\config
)<configProtectedData><providers>
раздел по старому (в c:\windows\System32\inetsrv\config\applicationHost.config
)Затем я снова могу установить пользовательский идентификатор для пула приложений.
Вы можете получить закрытый ключ с другого сервера и просто импортировать его на этот сервер, сначала экспортировав ключ с другого работающего сервера 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 или другого пользователя, которым он должен быть.
Тони Трус
Проверьте привязки для приложений, настроенных в этом пуле приложений, если они имеют неправильные привязки, например. недопустимые символы, пробел и т. д.
Я также столкнулся с этой проблемой в Windows Server 2012.
Если вы удалите последний параметр при использовании appcmd, пароль, вам удастся изменить тип удостоверения и установить имя пользователя.
Я так и не понял, почему я не могу установить пароль, поэтому я ответил на редактирование своего applicationHost.config файл напрямую. К сожалению, пароль отображается открытым текстом.
<configuration>
...
<system.applicationHost>
<applicationPools>
...
<add name="test-pool" managedRuntimeVersion="v4.0">
<processModel identityType="SpecificUser"
userName="MyAccountName" password="P@ssw0rd" />
</add>
...
</applicationPools>
...
</system.applicationHost>
...
</configuration>
Помимо настройки пула приложений для использования определенной учетной записи, я также сделал следующее:
1) Включил учетную запись в группу IIS_IUSRS, которая косвенно дает ей права входа в систему как пакетное задание.
2) Выполните следующую команду, чтобы предоставить права пользователю
aspnet_regiis -ga <your_app_pool_user>
Узнать больше: Как: создать учетную запись службы для приложения ASP.NET 2.0 (MSDN)
3) Перезапустите WAS и IIS, чтобы убедиться, что изменения в членстве в группах учетных записей вступили в силу.
C:> net stop was /y
C:> net start w3svc
Попробуйте изменить /section:applicationPools
к /section:system.applicationHost/applicationPools
и добавление /commit:apphost
к концу
appcmd задает конфигурацию /section:system.applicationHost/applicationPools /[name='AppPoolName '] .processModel.identityType:SpecificUser /[name='AppPoolName'] .processModel.password:P4ssW0rd / commit: apphost