1
我試圖使用Powershell(由Ansible運行)將IIS應用程序部署到IIS。確保將IIS AppPool用戶添加到Windows組中
我想我的應用程序能夠查詢性能計數器,所以我將它添加到使用此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用戶註銷並重新開啓將解決我的問題。我還沒有找到如何做到這一點(重新啓動或回收應用程序池不起作用)。