我正在尝试构建一个非常简单的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标头的值格式不正确
完整日志:
仅供参考,以下是上传包的blob的内容。可以看出,可以通过正确的URL访问它。
知道发生了什么事吗?感谢
答案 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'))]"