Убедитесь, что пользователь 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 в группу локальных окон.

После развертывания может случиться так, что пользователь будет добавлен в группу, но приложение по-прежнему не сможет получить доступ к счетчикам производительности.

Сценарий запускается непосредственно перед запуском пула приложений и приложения. Я пробовал следующие вещи, но безуспешно:

Я изменил свои сценарии развертывания следующими способами, но безуспешно:

  • Удалить пользователя из группы перед добавлением
  • Перезапустите пул приложений после добавления пользователя. IIS фактически жалуется ("Служба не может принимать сообщения в это время").
  • Добавить пользователя в группу после запуска приложения
  • Добавьте пользователя в группу в начале развертывания (до остановки приложения и пула)

Единственный способ решить мою проблему - перезапустить машину. Я хотел бы знать, есть ли лучший!

Если это возможно, я думаю, что выход пользователя из пула приложений и выход из него решит мою проблему. Я не нашел, как это сделать (перезапуск или утилизация пула приложений не работает).

1 ответ

Решение

Ответ был прост iisreset (в командной строке или Powershell).

Другие вопросы по тегам