我们使用msdeploy.exe
和预构建的软件包对Azure进行了大量部署。我们经常间歇性地(但显然是网络问题)经常发生故障。
命令是,
C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe
-verb:sync -source:package=D:\packages\mysite.zip
-dest:auto,ComputerName=https://mysite-staging.scm.azurewebsites.net:443/msdeploy.axd?site=mysite__staging,UserName='$mysite__staging',Password='longpassword',AuthType='Basic'
-retryAttempts:10
-retryInterval:3000
-setParam:name='foo1',value='bar1'
-enableRule:AppOffline
-setParam:name='foo2',value='bar2'
-allowUntrusted=True
它通常可以正常工作,但有时它会因此消息而失败:
Error Code: ERROR_CONNECTION_TERMINATED
-retryAttempts
和-retryInterval
选项似乎没有效果。错误发生在我添加它们之前,现在添加它们之后,没有区别。 msdeploy没有输出说它正在重试。 在让msdpeloy重试时,我有什么遗漏?
所有内容(包括运行msdeploy的计算机)都托管在Azure的同一区域中。没有任何潜在的网络问题,特别是30,000毫秒的问题 - SCM / Kudu或msdeploy在更高层失败。
答案 0 :(得分:1)
对我来说,这个问题有时是因为小提琴手和(更常见的)因为互联网速度慢而发生的。
此外,您可以尝试使用Kudu命令,例如msdeploy和SCM_COMMAND_IDLE_TIMEOUT的扩展名,您可以设置=>网络应用设置=> app settings =>添加具有所需值的设置(例如360(以秒为单位))。 Reference。它说任何外部命令都会在一段时间后被杀死,所以它可能是相关的。
答案 1 :(得分:1)
我也遇到过这个问题,并在内部向MS发布了一个问题。
我拥有的一个技巧是"热身"运行msdeploy之前的站点。这可以像powershell命令一样简单,以调用站点URL上的webrequest。出于某种原因,这减少了连接终止错误的数量。