You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service 横向扩展(Scale Out)后实例运行不同应用版本问题

问题原因

该问题属于Windows平台Azure App Service横向扩展场景下的常见部署同步问题,并非你遗漏了基础配置,核心诱因有两个:

  • 启用了站点本地缓存:Azure App Service开启本地缓存后,每个实例会将共享存储中的站点文件缓存到本地实例磁盘,默认部署仅更新共享存储文件,运行中的实例不会主动拉取更新后的缓存文件,导致版本不一致
  • MSDeploy默认部署规则限制:默认部署未启用进程停止规则,运行中的Dotnet进程会锁定部分程序集文件,导致部署仅能更新无文件锁的实例
解决方案

按优先级依次配置即可解决:

  1. 调整GitHub Action部署参数,添加MSDeploy额外规则
    修改你的部署步骤配置,新增additional-arguments参数强制停止站点进程、避免文件锁:
- name: Azure WebApp
  uses: azure/webapps-deploy@v2.2.3
  with:
    publish-profile: ${{ secrets.AZUREWEBAPPPUBLISHPROFILE }}
    app-name: esferas-app
    slot-name: staging
    package: ./artifacts/web
    additional-arguments: '-enableRule:AppOffline'

如果你需要保留站点内用户上传的静态文件等非部署生成的内容,可以在参数后追加-enableRule:DoNotDeleteRule避免部署时删除额外文件。
2. 配置App Service强制全实例同步
进入Azure门户对应App Service的配置 > 应用设置页面,添加如下配置项:

  • 键:WEBSITE_RESTART_ALL_INSTANCES_ON_DEPLOYMENT,值:1
    该配置会触发每次部署完成后自动重启所有实例,拉取共享存储中的最新代码文件。如果你开启了本地缓存提升性能,确认配置WEBSITE_LOCAL_CACHE_OPTION的值为Always即可,无需关闭本地缓存。
  1. 槽位交换补充配置(可选)
    如果你后续需要将staging槽的代码交换到生产槽,额外添加应用设置WEBSITE_SWAP_WARMUP_PING_PATH,值设为你的健康检查接口路径(如/),交换过程中会自动预热所有实例,确保上线时所有实例运行版本一致。
  2. 临时应急修复
    如果部署后临时出现版本不一致,直接在Azure门户App Service概览页点击重启,即可强制所有实例同步最新代码。

内容的提问来源于stack exchange,提问作者MattGWagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:06