Убедитесь, что пользователь IIS AppPool добавлен в группу Windows.
Я пытаюсь развернуть приложение ASP.NET в IIS с помощью Powershell (выполняется Ansible).
Я хочу, чтобы мое приложение могло запрашивать счетчики производительности, поэтому я добавляю его пользователям Performance Monitor с помощью этого сценария Powershell:
appPoolName=$args[0]
$group = [ADSI]"WinNT://$Env:ComputerName/Performance Monitor Users,group"
$ntAccount = New-Object System.Security.Principal.NTAccount("IIS AppPool\$appPoolName")
$strSID = $ntAccount.Translate([System.Security.Principal.SecurityIdentifier])
$user = [ADSI]"WinNT://$strSID"
$group.Add($user.Path)
На самом деле это происходит из-за другого вопроса: добавьте IIS AppPool\ASP.NET v4.0 в группу локальных окон.
После развертывания может случиться так, что пользователь будет добавлен в группу, но приложение по-прежнему не сможет получить доступ к счетчикам производительности.
Сценарий запускается непосредственно перед запуском пула приложений и приложения. Я пробовал следующие вещи, но безуспешно:
- Перезапустите приложение
- Перезапустите пул приложений
- Установите AnonymousAuthentication на "Идентификатор пула приложений"
- Развернуть снова
Я изменил свои сценарии развертывания следующими способами, но безуспешно:
- Удалить пользователя из группы перед добавлением
- Перезапустите пул приложений после добавления пользователя. IIS фактически жалуется ("Служба не может принимать сообщения в это время").
- Добавить пользователя в группу после запуска приложения
- Добавьте пользователя в группу в начале развертывания (до остановки приложения и пула)
Единственный способ решить мою проблему - перезапустить машину. Я хотел бы знать, есть ли лучший!
Если это возможно, я думаю, что выход пользователя из пула приложений и выход из него решит мою проблему. Я не нашел, как это сделать (перезапуск или утилизация пула приложений не работает).
1 ответ
Ответ был прост iisreset
(в командной строке или Powershell).