我们使用下面的脚本在VSO / VSTS Build(vNext)中使用MSBuild MSDeploy发布到我们的Azure Web App。这很有效。
但是,在将Azure Web App分配到自定义域(通过Azure门户)时,发布失败。
MSDeploy上的VSTS构建错误:
使用发布方法[MSDeploy]发布 执行命令[“C:\ Program Files \ IIS \ Microsoft Web Deploy V3 \ msdeploy.exe”-source:IisApp ='C:\ a \ 8b0700fff \ MrProjectMain \ Api \ wwwroot' -dest:IisApp ='myproject-prod- webapp',ComputerName ='https://myproject-prod-webapp.azurewebsites.net/msdeploy.axd',UserName ='$ myproject-prod-webapp',Password ='{PASSWORD-REMOVED-FROM-LOG}',IncludeAcls ='False',AuthType ='Basic' - 动词:sync -enableLink:contentLibExtension -retryAttempts:2 -disablerule:BackupRule]
[错误]错误代码:ERROR_COULD_NOT_CONNECT_TO_REMOTESVC
[错误]更多信息:无法使用指定的进程(“Web管理服务”)连接到远程计算机(“myproject-prod-webapp.azurewebsites.net”),因为服务器没有响应。确保在远程计算机上启动该过程(“Web管理服务”)。请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMOTESVC了解详情。 [错误]错误:远程服务器返回错误:(403)禁止 [错误]错误计数:1。
Azure门户自定义域设置:
发布脚本:
param($websiteName, $packOutput)
$website = Get-AzureWebsite -Name $websiteName
$msdeployurl = $website.EnabledHostNames[1]
$publishProperties = @{'WebPublishMethod'='MSDeploy';
'MSDeployServiceUrl'=$msdeployurl;
'DeployIisAppPath'=$website.Name;
'Username'=$website.PublishingUsername;
'Password'=$website.PublishingPassword;
'SkipExtraFilesOnServer'='False';
'AllowUntrustedCertificate'='True'}
Write-Output "Publishing web app..."
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1"
. $publishScript -publishProperties $publishProperties -packOutput $packOutput
答案 0 :(得分:1)
问题在于:
$msdeployurl = $website.EnabledHostNames[1]
默认情况下,MSDeploy SCM URL是EnabledHostNames数组中的第二个。所以它默认工作。但是,只要对Web应用程序进行了一些更改,它就可能无法正常工作。根据您提供的日志,MSDeploy正在尝试连接到" https://myproject-prod-webapp.azurewebsites.net/msdeploy.axd",这不是SCM URL。 SCM URL应如下所示:" https://myproject-prod-webapp.scm.azurewebsites.net/msdeploy.axd"。因此,您需要立即检查正确的scm URL数组编号。您可以在PowerShell脚本中添加如下代码,以查看哪个是scm URL,然后相应地更新脚本。
Write-Output $website.EnabledHostNames[0]
Write-Output $website.EnabledHostNames[1]
Write-Output $website.EnabledHostNames[2]
...
您还可以参考this article更新脚本以自动获取正确的SCM网址。