使用 AppCmd "Not enough storage is available to process this command." "IIS Web App Manage" 步骤上的 VSTS 发布错误
VSTS release errors on "IIS Web App Manage" step with AppCmd "Not enough storage is available to process this command."
在 Visual Studio Team Services / VSTS 中基于 "IIS Website Deployment" 模板集进行简单的两步发布定义,以配置应用程序池(v4,集成,应用程序池标识)和网站( http, 192.168.0.xxx LAN IP, port 80, valid hostname) 抛出一个错误我一直在努力寻找任何细节。将问题隔离到某些 AppCmd 参数,但似乎无法通过步骤设置将其删除。
通过安装没有任何问题的 VSTS 代理 v2.127.0 部署到 2008 R2 目标,但 AppCmd 在 "IIS Web App Manage" 步骤中始终失败(在重新配置应用程序池、创建目录等后没有问题)然后以代码 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 Developer Support 讨论后,我的问题似乎是目标服务器的 applicationHost.config encryption/security 键因小于 - AppCmd
返回有用的错误消息
验证 applicationHost.config 是否有问题的最简单方法是在恢复到 applicationHost.config (C:\Windows\System32\inetsrv\config) 的原始默认副本之前备份当前配置,然后重新启动 W3SVC 服务 - 之后能够毫无问题地执行 "IIS Web App Manage" 步骤。
不幸的是,保留它恢复不是一个选项,所以比较了两个版本的配置,并在 <configuration><configProtectedData><providers>
中找到了两个具有不同 sessionKey
值的键
将突出显示的密钥版本 (AesProvider
& IISWASOnlyAesProvider
) 从我们的干净配置复制到当前配置,重新启动 W3SVC 服务并且相同的 AppCmd 行能够 运行成功。
将继续监控,因为这只发生在物理内部开发服务器上,有许多可能的方式 applicationHost.config 在服务期间可能会意外更改 - none 应该永远适用到生产系统。
在 Visual Studio Team Services / VSTS 中基于 "IIS Website Deployment" 模板集进行简单的两步发布定义,以配置应用程序池(v4,集成,应用程序池标识)和网站( http, 192.168.0.xxx LAN IP, port 80, valid hostname) 抛出一个错误我一直在努力寻找任何细节。将问题隔离到某些 AppCmd 参数,但似乎无法通过步骤设置将其删除。
通过安装没有任何问题的 VSTS 代理 v2.127.0 部署到 2008 R2 目标,但 AppCmd 在 "IIS Web App Manage" 步骤中始终失败(在重新配置应用程序池、创建目录等后没有问题)然后以代码 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 Developer Support 讨论后,我的问题似乎是目标服务器的 applicationHost.config encryption/security 键因小于 - AppCmd
返回有用的错误消息验证 applicationHost.config 是否有问题的最简单方法是在恢复到 applicationHost.config (C:\Windows\System32\inetsrv\config) 的原始默认副本之前备份当前配置,然后重新启动 W3SVC 服务 - 之后能够毫无问题地执行 "IIS Web App Manage" 步骤。
不幸的是,保留它恢复不是一个选项,所以比较了两个版本的配置,并在 <configuration><configProtectedData><providers>
sessionKey
值的键
将突出显示的密钥版本 (AesProvider
& IISWASOnlyAesProvider
) 从我们的干净配置复制到当前配置,重新启动 W3SVC 服务并且相同的 AppCmd 行能够 运行成功。
将继续监控,因为这只发生在物理内部开发服务器上,有许多可能的方式 applicationHost.config 在服务期间可能会意外更改 - none 应该永远适用到生产系统。