Azure函数消费计划下Zip部署在WebsiteRunFromPackage=0时失败
Azure函数消费计划下Zip部署(WebsiteRunFromPackage=0)失败的解决方法
问题描述
使用以下配置创建的Azure函数消费计划:
var appServicePlanData = new AppServicePlanData(region) { Sku = new AppServiceSkuDescription { Name = "Y1", Tier = "Consumption", Size = "Y1" }, Kind = "functionapp", };
当配置项WebsiteRunFromPackage设为0时,通过Zip部署(部署URL为string zipDeployUrl = $"https://{functionAppName}.scm.azurewebsites.net/api/zipdeploy";)无法正常完成;但将该值设为1时部署完全正常。已确认WebsiteRunFromPackage=1的场景可用,现需解决WebsiteRunFromPackage=0时的部署问题,因为不希望wwwroot文件夹处于只读状态。
解决方法
- 检查Zip包结构:确保Zip包的根目录直接包含函数应用的核心文件(如
host.json、各函数对应的文件夹等),不要将这些文件嵌套在Zip包内的子文件夹中。如果包内存在顶层子文件夹,部署后文件不会被放置到wwwroot目录下,导致函数应用无法识别。 - 确认部署凭据有效性:发送Zip部署请求时,必须携带正确的Basic身份验证凭据(可从Azure门户函数应用的“部署中心”获取发布配置文件中的用户名和密码),确保SCM站点能正确授权部署请求。
- 清理部署缓存:登录函数应用的Kudu站点(
https://{functionAppName}.scm.azurewebsites.net),进入“Debug console” -> “CMD”,删除D:\home\site\wwwroot目录下的所有文件和文件夹,再重新执行Zip部署操作。 - 对齐运行时版本:确保Azure函数应用的运行时版本与本地开发环境一致。可在Azure门户的函数应用“配置” -> “常规设置”中查看和调整运行时版本,避免因版本不兼容导致部署后应用无法启动。
- 设置正确的请求头:发送Zip部署请求时,务必将
Content-Type请求头设置为application/zip,否则SCM站点无法正确解析上传的压缩包。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

