如何使用MSDeploy扩展将程序包部署到Azure Web App? (其中一个HTTP标头的值格式不正确)

时间:2016-03-22 10:40:40

标签: azure azure-storage msdeploy webdeploy azure-resource-manager

我正在尝试构建一个非常简单的Azure Resource Manager模板来配置应用服务计划,Web应用程序并使用MSDeploy立即在那里部署包。我在Visual Studio中创建了一个资源组项目,并添加了Web App和MSDeploy扩展。我基本上遵循了这篇文章:http://blogs.technet.com/b/georgewallace/archive/2015/05/10/deploying-a-website-with-content-through-visual-studio-with-resource-groups.aspx。我没有自定义部署PowerShell脚本,该脚本随项目一起提供。

以下是模板:http://pastebin.com/raw/aFsMyg1W

一切看起来都应该有效(包被上传到blob,创建了Web应用程序),但部署失败并显示消息:

  

资源Microsoft.Web / sites / extensions' xg-test-webapp5 / MSDeploy'消息失败'资源操作在终端配置状态下完成'失败'。

通过Kudu控制台(LogFiles/SiteExtensions/MSDeploy/appManagerLog.xml)可以访问错误消息:

  

AppGallery Deploy失败:' Microsoft.WindowsAzure.StorageClient.StorageClientException:其中一个HTTP标头的值格式不正确

完整日志:

full log

仅供参考,以下是上传包的blob的内容。可以看出,可以通过正确的URL访问它。

blob

知道发生了什么事吗?感谢

1 个答案:

答案 0 :(得分:1)

在您的ARM模板中, MSDeploy 扩展资源的 packageUri 属性是参数的串联: _artifactsLocation webdeployPackageFolder < / strong>和 _artifactsLocationSasToken

我在下面测试了您的实际Web部署包blob Uri。 https://xgartifacts.blob.core.windows.net/xg-test-rg-stageartifacts/deploy/package.zip

它是一个可公开访问的blob,这意味着它可以在没有SAS令牌的情况下下载。

因此,您不应将SAS令牌包含在ARM模板的packageUri属性中。

希望这有帮助!

"packageUri": "[concat(parameters('_artifactsLocation'), '/', parameters('webdeployPackageFolder'), '/', parameters('webdeployPackageFileName'), parameters('_artifactsLocationSasToken'))]"