【发布时间】:2023-05-31 22:25:01
【问题描述】:
我正在尝试使用 Powershell(由 Ansible 运行)将 ASP.NET 应用程序部署到 IIS。
我希望我的应用程序能够查询性能计数器,因此我使用此 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)
它实际上来自另一个 SO 问题:Add IIS AppPool\ASP.NET v4.0 to local windows group。
部署后,可能会发生用户被添加到组但应用程序仍然无法访问性能计数器的情况。
脚本在启动应用程序池和应用程序之前运行。 我尝试了以下事情,但没有成功:
- 重新启动应用程序
- 重启应用程序池
- Set AnonymousAuthentication to 'Application pool identity'
- 再次部署
我通过以下方式修改了我的部署脚本,但没有成功:
- 在添加用户之前从组中删除用户
- 添加用户后重新启动应用程序池。 IIS 实际上在抱怨(“该服务目前无法接受消息”)。
- 启动应用程序后将用户添加到组中
- 在部署开始时将用户添加到组中(在停止应用程序和池之前)
我必须解决我的问题的唯一方法是重新启动机器。我想知道有没有更好的!
如果可能的话,我认为让 App Pool 用户注销并重新登录可以解决我的问题。我还没有找到如何做到这一点(重新启动或回收应用程序池不起作用)。
【问题讨论】:
标签: windows powershell iis-8 adsi