为了在 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 对象“默认网站/MyNewApp”已更改
错误(hresult:80090016,消息:无法提交配置更改。
键集不存在)
在以我自己或服务帐户登录的情况下从 Powershell 控制台执行上述代码后,将返回以下消息:
添加了 APP 对象“默认网站/MyNewApp”
添加了 VDIR 对象“默认网站/MyNewApp”
我可以在 IIS 管理器中确认已创建目录和应用程序。
我无法在控制台中重现该错误。只有当它作为 Release Agent 运行并通过 DevOps Server Web 界面启动时才会发生此错误。
我尝试了以下方法:
- 密钥集问题 - https://support.microsoft.com/en-us/help/977754/keyset-does-not-exist-error-message-when-you-try-to-change-the-identit本地服务和服务帐户。
- Up-to 修改服务帐户的 C:\inetpub\wwwroot 权限
- 将服务帐户添加到 IIS 管理器权限
更新 1:
我确定“密钥集不存在”错误是由于尝试使用 DefaultAppPool 应用程序池作为设置的一部分。此应用程序池未使用服务帐户设置,但仍使用默认应用程序池标识设置。
但是,在进行此更改后,我有一个新错误:
APP 对象“默认网站/MyNewApp”已更改
错误(hresult:80070057,消息:无法提交配置更改。
参数不正确。)
...
进程“appcmd.exe”以代码“87”退出。
非常感谢任何指导。
更新 2:
我记录了当前正在查看的 Microsoft 社区问题。你可以在这里看到它。