在Visual Studio Team Services / VSTS中基于" IIS网站部署"进行简单的两步版本定义。模板设置为配置应用程序池(v4,集成,应用程序池标识)和网站(http,192.168.0.xxx局域网IP,端口80,有效主机名),这是一个错误,我很难找到任何细节上。将问题隔离到某些AppCmd参数但似乎无法通过步骤设置将其删除。
通过VSTS代理v2.127.0部署到2008 R2目标,安装时没有任何问题,但AppCmd始终在" IIS Web App Manage"步骤(重新配置应用程序池,创建目录等没有问题)然后退出代码8
hresult 80070008,无法提交配置更改。没有足够的存储空间来处理此命令。
下面的完整日志,但此行会导致错误
" C:\ Windows \ System32下\ INETSRV \ Appcmd.exe的" set site /site.name:"Example - Website Name" -applicationDefaults.applicationPool:"示例 - AppPool名称" - [path =' /']。[path =' /']。physicalPath:" D:\ Test \ Example - 网站名称" - [path =' /']。[path =' /']。userName: - [path =' /']。[path =& #39; /']密码:
直接在目标上运行它会产生相同的错误,如果我删除空白用户名&密码参数可行。检查我们是否尝试在网站上设置身份验证设置的凭据和组合,这两个参数不会以不会引发错误的方式消失或格式化。
尝试搜索类似的问题并且它无处可去,重新启动目标,以防内存问题,甚至尝试构建仅限网站的步骤,但错误仍然存在。
##[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
答案 0 :(得分:0)
与MS开发人员支持人员讨论后,我的问题似乎是目标服务器的 applicationHost.config 加密/安全密钥的问题,并且返回的错误消息不是很有用通过AppCmd
验证applicationHost.config出错的最简单方法是备份当前配置,然后恢复为applicationHost.config的原始默认副本(C:\ Windows \ System32 \ inetsrv \ config),然后重新启动W3SVC服务 - 能够执行" IIS Web App管理"之后没有任何问题。
不幸的是,保留它还不是一个选项,因此对配置的两个版本进行了分析,发现sessionKey
中有两个<configuration><configProtectedData><providers>
值不同的键
将已突出显示的密钥(AesProvider
&amp; IISWASOnlyAesProvider
)的版本从我们的干净配置复制到当前,重新启动W3SVC服务,并且相同的AppCmd系列能够成功运行。
将继续监控,因为这只发生在物理内部开发服务器上,其中有许多潜在的方式,applicationHost.config可能会在服务中意外更改 - 所有这些都不应用于生产系统