azure-devops - 使用 AppCmd "IIS Web App Manage"在 "Not enough storage is available to process this command."步骤上进行 VSTS 发布错误

标签 azure-devops appcmd

在 Visual Studio Team Services/VSTS 中基于“IIS 网站部署”模板集进行简单的两步发布定义,以配置应用程序池(v4、集成、应用程序池标识)和网站(http、192.168.0) .xxx LAN IP、端口 80、有效主机名),这引发了一个错误,我一直在努力寻找任何详细信息。将问题隔离到某些 AppCmd 参数,但似乎无法通过步骤设置删除它们。

通过 VSTS 代理 v2.127.0 部署到 2008 R2 目标,该代理安装时没有任何问题,但 AppCmd 在“IIS Web 应用程序管理”步骤中始终失败(在重新配置应用程序池、创建目录等后没有问题),然后退出并显示代码 8

hresult 80070008, Failed to commit configuration changes. Not enough storage is available to process this command.

下面是完整日志,但此行导致错误

"C:\Windows\system32\inetsrv\appcmd.exe" set site /site.name:"Example - Website Name" -applicationDefaults.applicationPool:"Example - AppPool Name" -[path='/'].[path='/'].physicalPath:"D:\Test\Example - Website Name" -[path='/'].[path='/'].userName: -[path='/'].[path='/'].password:

直接在目标上运行它会产生相同的错误,如果我去掉空白的用户名和密码参数,它就会起作用。经检查,我们没有尝试针对网站设置凭据和身份验证设置组合,并且这两个参数不会消失或以不会引发错误的方式格式化。

尝试搜索类似的问题,但毫无结果,重新启动目标以防内存问题,甚至尝试构建仅网站的步骤,但错误仍然存​​在。

##[section]Starting: Configure IIS AppPool & Website
==============================================================================
Task         : IIS Web App Manage
Description  : Create or update a Website, Web App, Virtual Directories, and Application Pool
Version      : 0.5.4
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?linkid=839731)
==============================================================================
##[command]"C:\Windows\system32\inetsrv\appcmd.exe"  list apppool /name:"Example - AppPool Name"
##[command]"C:\Windows\system32\inetsrv\appcmd.exe"  set apppool /apppool.name:"Example - AppPool Name" -managedRuntimeVersion:v4.0 -managedPipelineMode:Integrated -processModel.identityType:ApplicationPoolIdentity
APPPOOL object "Example - AppPool Name" changed
##[command]"C:\Windows\system32\inetsrv\appcmd.exe"  list site /name:"Example - Website Name"
##[command]"C:\Windows\system32\inetsrv\appcmd.exe"  add site /name:"Example - Website Name" /physicalPath:"D:\Test\Example - Website Name"
SITE object "Example - Website Name" added
APP object "Example - Website Name/" added
VDIR object "Example - Website Name/" added
##[command]"C:\Windows\system32\inetsrv\appcmd.exe"  set site /site.name:"Example - Website Name" -applicationDefaults.applicationPool:"Example - AppPool Name" -[path='/'].[path='/'].physicalPath:"D:\Test\Example - Website Name" -[path='/'].[path='/'].userName: -[path='/'].[path='/'].password:
SITE object "Example - Website Name" changed
ERROR ( hresult:80070008, message:Failed to commit configuration changes.  

Not enough storage is available to process this command.

 )
##[error]Process 'appcmd.exe' exited with code '8'.
##[section]Finishing: Configure IIS AppPool & Website

最佳答案

与 MS 开发人员支持讨论后,我的问题似乎是目标服务器的 applicationHost.config 加密/安全 key 问题,由于 AppCmd 返回的不太有用的错误消息而变得复杂

p>

验证 applicationHost.config 是否有问题的最简单方法是在恢复到 applicationHost.config 的原始默认副本 (C:\Windows\System32\inetsrv\config) 之前备份当前配置,然后重新启动 W3SVC服务 - 能够执行“IIS Web 应用程序管理”步骤,之后没有任何问题。

不幸的是,保持其恢复状态不是一个选项,因此比较了配置的两个版本,发现两个 key 具有不同的 sessionKey <configuration><configProtectedData><providers> 中的值

将突出显示的键( AesProviderIISWASOnlyAesProvider )的版本从我们的干净配置复制到当前版本,重新启动 W3SVC 服务,并且相同的 AppCmd 行能够成功运行。

将继续监控,因为这种情况仅发生在物理内部开发服务器上,applicationHost.config 在使用过程中可能会以多种潜在方式意外更改 - 这些都不应应用于生产系统。

关于azure-devops - 使用 AppCmd "IIS Web App Manage"在 "Not enough storage is available to process this command."步骤上进行 VSTS 发布错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705095/

相关文章:

iis - 在将绑定(bind)添加到网站之前,APPCMD 如何测试绑定(bind)是否存在?

iis - 通过 appcmd.exe 设置 IIS 配置以加载用户配置文件

iis - 当前命令用法不支持该标识符。您指定了 'testname'

asp.net - IISExpress 应用程序池回收

Azure Pipelines 自动重试任务

c# - Azure devops - 在 netcore/模板项目之外找不到 NUnit 测试

azure-devops - Azure Pipelines 将 YAML 用于具有不同变量值但没有 YAML 重复的多个环境(阶段)

git - Visual Studio 2017 本地 Git Repo 路径不正确

git - 如何使用 Azure DevOps REST Api 从 Git 存储库下载分支中的文件?

iis - 我可以使用 PowerShell 而不是 AppCmd.exe 来监视 IIS 状态吗?