要在 IIS 下创建目录并将 Web 应用程序添加到 IIS,我将此脚本放在 Azure DevOps 服务器部署组作业 Powershell 任务中:
New-Item -Path "C:\inetpub\wwwroot" -Name "MyNewApp" -ItemType "directory" `
C:\Windows\system32\inetsrv\appcmd.exe add app `
/site.name:"Default Web Site" `
/path:"/MyNewApp" `
/physicalPath:"C:\inetpub\wwwroot\MyNewApp"`
当此任务运行时,它会抛出一个错误:(为清楚起见,删除了时间戳)APP object "Default Web Site/MyNewApp" changed
ERROR ( hresult:80090016, message:Failed to commit configuration changes.
Keyset does not exist )
在以我自己或服务帐户登录时从 Powershell 控制台执行上述代码后,将返回以下消息:
APP object "Default Web Site/MyNewApp" added
VDIR object "Default Web Site/MyNewApp" added
我可以在 IIS 管理器中确认目录和应用程序已创建。
我无法在控制台中重现该错误。只有当它作为 Release Agent 运行并通过 DevOps Server Web 界面启动时才会发生此错误。
我尝试了以下方法:
更新 1 :
我确定“ key 集不存在”错误来自尝试使用 DefaultAppPool 应用程序池作为设置的一部分。此应用程序池未使用服务帐户设置,但仍设置为默认应用程序池标识。
但是,在进行此更改后,我遇到了一个新错误:
APP object "Default Web Site/MyNewApp" changed
ERROR ( hresult:80070057, message:Failed to commit configuration changes.
The parameter is incorrect. )
...
Process 'appcmd.exe' exited with code '87'.
非常感谢任何指导。
更新 2 :
我在 Microsoft 社区记录了一个当前正在查看的问题。你可以看到here .
最佳答案
您还可以使用 servermanager 查看 .net 实现:
https://docs.microsoft.com/en-us/iis/manage/scripting/how-to-use-microsoftwebadministration
https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration.servermanager?view=iis-dotnet
在 powershell 中使用它应该不是很困难。
关于powershell - 发布 Web App 添加任务所需的代理配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55542684/