Azure Web App部署后启动失败:已移除权限orders_justification_read仍被检测
问题
使用ZIP Deploy将Python/React应用部署到Azure Web App后,应用启动失败,报错如下:
ValueError: Permission code orders_justification_read is defined in PERMISSIONS but is not used in the application
该权限代码orders_justification_read存在于上一次部署中,但现已移除。部署前已重新生成完整构建文件夹,并确认:
- 当前源代码中无任何对
orders_justification_read权限的引用; - 已部署的
site/wwwroot目录下无该权限的任何痕迹。
尽管如此,应用启动时仍会验证该已移除的权限,导致崩溃。
上下文信息:
- 使用自定义
build_app.py脚本准备仅包含必要文件的ZIP包; - 通过Azure DevOps的
AzureWebApp@1任务以ZIP Deploy模式部署; - 怀疑Azure端缓存或保留了旧文件,尽管上传的构建包中无该过时权限。
请问:是否有人遇到过Azure Web App引用已不在wwwroot中的代码这类问题?ZIP Deploy是否存在已知的缓存行为或部署不一致情况可解释该问题?
排查与解决思路
这类问题确实不少开发者遇到过,主要和Azure Web App的几个缓存/残留机制有关,以下是常见原因和对应解决办法:
- Python虚拟环境残留:Azure Web App默认会缓存Python虚拟环境(路径通常为
antenv),旧依赖包或编译后的.pyc字节码文件可能残留其中,导致加载过时的权限定义。可以通过Kudu控制台删除antenv目录后重启应用,或者在部署脚本中添加清理虚拟环境的步骤。 - ZIP Deploy增量更新特性:ZIP Deploy默认采用增量部署逻辑,仅更新有变化的文件,不会主动删除已不存在于新ZIP包中的旧文件。如果自定义
build_app.py生成的包未正确处理文件删除操作,可能导致旧文件残留。可以在AzureWebApp@1任务中添加clean: true参数,强制部署前完全清理wwwroot目录。 - 应用进程缓存:即便文件已更新,正在运行的应用进程可能仍在使用内存中加载的旧代码。部署完成后强制重启Web App,确保进程加载新的代码文件。
- 外部配置/存储残留:检查应用是否依赖Azure App Configuration、Key Vault或
site/data等本地存储目录保存权限配置,这些位置可能残留旧的权限定义,需要同步清理。
另外,可通过Kudu控制台(https://<你的应用名>.scm.azurewebsites.net/)查看wwwroot之外的目录(如temp、antenv),确认是否有旧文件残留。
内容的提问来源于stack exchange,提问作者Gandalf0u
相关产品推荐
相关产品推荐

