Azure DevOps发布管道报错:appcmd.exe退出代码-2146893802求助
解决Azure DevOps发布时“Keyset does not exist”错误的方案
针对你遇到的ERROR ( hresult:80090016, message:Failed to commit configuration changes.<br />Keyset does not exist )及appcmd.exe退出码-2146893802问题,以下是针对性的排查和解决步骤:
检查应用程序池标识的权限
确认部署目标网站对应的应用程序池标识(格式为IIS AppPool\<你的应用池名称>)拥有以下路径的读取权限:C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys- 网站SSL证书的私钥存储路径(若使用HTTPS绑定)
操作方式:右键目标文件夹→属性→安全→添加上述池标识,勾选「读取」和「列出文件夹内容」权限后保存。
重新生成机器密钥
- 打开IIS管理器,选中服务器节点,在功能视图中找到「机器密钥」
- 点击页面右侧的「生成密钥」按钮,随后保存配置
- 运行命令提示符执行
iisreset重启IIS服务
验证VPN环境下的证书有效性
由于通过VPN访问目标环境,需确认:- 目标服务器本地证书存储中,网站绑定的SSL证书未过期、未被删除
- 证书私钥的访问权限正确:打开证书管理器→找到对应证书→右键→「所有任务」→「管理私钥」→添加应用程序池标识并赋予读取权限
清理Azure DevOps代理缓存
登录部署代理所在服务器,找到代理安装目录下的_work文件夹,删除其中所有缓存文件,然后重启Azure DevOps代理服务。检查AppCmd执行的账户权限
确认Azure DevOps代理服务运行的账户(默认是NT SERVICE\VSTSAgent)拥有修改目标服务器IIS配置的权限。可尝试手动使用该账户执行对应的appcmd命令,验证是否能正常完成配置修改。
内容的提问来源于stack exchange,提问作者Andre
相关产品推荐
相关产品推荐

