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

如何通过VSTS将Azure WebJob与ASP.NET应用部署至同一App Service?

解决VSTS自动部署ASP.NET UI项目和WebJob到同一Azure App Service的步骤

我来帮你一步步搞定这个自动部署的问题,毕竟把UI和WebJob一起自动部署到同一个App Service确实需要点小技巧,咱们从构建配置到发布定义一步步来:

第一步:确保构建定义正确输出两个项目的部署包

首先得保证你的VSTS构建能生成UI和WebJob的可部署包,这样发布环节才能拿到对应的文件:

  • 针对UI项目,在构建定义里添加MSBuild任务,配置参数如下:
    /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\UI\\"
    
    这个参数会让MSBuild生成一个单独的Web Deploy zip包,放到构建工件目录的UI子文件夹里。
  • 针对WebJob项目,同样添加MSBuild任务,配置参数:
    /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\WebJobs\\"
    
    注意WebJob的包要单独输出到WebJobs子文件夹,方便后续发布时区分。
  • 最后一定要加一个Publish Build Artifacts任务,把$(build.artifactstagingdirectory)下的所有内容(也就是UI和WebJobs的包)发布到工件库,这样发布定义才能获取到这些文件。

第二步:创建发布定义实现自动部署

接下来创建发布定义,把两个项目部署到同一App Service:

  1. 新建发布定义,选择空白模板(或者直接选Azure App Service Deployment模板再修改)。
  2. 添加第一个Azure App Service Deploy任务,用来部署UI项目:
    • 选择你的Azure订阅并完成授权;
    • 目标App Service选择你已经部署过的那个;
    • 包或文件夹路径填$(System.DefaultWorkingDirectory)/**/UI/*.zip,这样能自动找到UI项目的部署包;
    • 其他保持默认配置即可。
  3. 添加第二个Azure App Service Deploy任务,用来部署WebJob:
    • 同样选择对应的Azure订阅和目标App Service;
    • 包或文件夹路径填$(System.DefaultWorkingDirectory)/**/WebJobs/*.zip;
    • 关键配置:在Additional Deployment Options里,勾选Publish using Web Deploy,然后在Additional Arguments里添加以下参数(根据你的WebJob类型调整):
      • 如果是连续WebJob:-destDir="site\wwwroot\App_Data\jobs\continuous\WebJobs"
      • 如果是触发式WebJob:-destDir="site\wwwroot\App_Data\jobs\triggered\WebJobs"
        这个参数的作用是把WebJob的文件部署到主站点的App_Data目录下对应的WebJob文件夹里,Azure会自动识别这个目录下的WebJob并运行。

额外注意事项

  • 确认你的Azure App Service已经开启了Web Deploy功能:在Azure门户的App Service配置里,找到部署中心,确认Web Deploy是启用状态;
  • 如果想简化部署步骤,也可以在构建阶段就把WebJob的文件合并到UI的部署包里:添加Extract Files任务解压WebJob的zip包,再用Copy Files任务把解压后的文件复制到UI包的App_Data/jobs/[continuous|triggered]/WebJobs目录下,最后重新打包UI项目,这样发布时只需要一个部署任务就能搞定;
  • 测试发布定义时,可以先手动触发一次,查看日志排查问题,如果部署失败,重点看Web Deploy的报错信息,通常是路径权限或者包格式的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:50