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

Azure Web App(Linux) Run From Package无法识别.NET 8应用或找到启动DLL

解决Linux Azure Web App通过Run From Zip部署后无法找到.runtimeconfig.json的问题

问题根源

  1. 环境变量不匹配:WEBSITE_RUN_FROM_PACKAGE=1仅适用于Windows版Web App,Linux环境对应的运行变量是WEBSITE_RUN_FROM_ZIP,二者的运行机制存在差异(Linux是直接挂载ZIP包而非解压)。
  2. ZIP包结构错误:ArchiveFiles@2任务若未正确配置,会将发布产物的上层目录(如publish文件夹)也打包进ZIP,导致Web App挂载后无法在根路径找到.runtimeconfig.json和启动DLL,转而加载默认的hostingstart.dll。

修复步骤

1. 修正DotNetCoreCLI发布任务

确保发布产物直接输出到指定目录,且不自动打包:

- task: DotNetCoreCLI@2
  displayName: '发布应用'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: '**/*.csproj'
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish'
    zipAfterPublish: false

2. 修正ArchiveFiles打包任务

关键设置includeRootFolder: false,确保ZIP根目录直接包含所有发布文件,无嵌套上层文件夹:

- task: ArchiveFiles@2
  displayName: '打包发布产物为ZIP'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/publish'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/app.zip'
    replaceExistingArchive: true

3. 修正AzureRmWebAppDeployment部署任务

明确指定Linux应用类型和Run From Zip部署方式:

- task: AzureRmWebAppDeployment@4
  displayName: '部署到Linux Web App'
  inputs:
    azureSubscription: '你的Azure服务连接名称'
    appType: 'webAppLinux'
    WebAppName: '你的Web App名称'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/app.zip'
    deploymentMethod: 'runFromZip'

4. 配置正确的环境变量

在Azure门户的Web App配置中,添加或更新环境变量:

  • 变量名:WEBSITE_RUN_FROM_ZIP
  • 变量值:1(若使用外部存储的ZIP包,可直接填写对应URL)

验证步骤

  • 下载流水线生成的app.zip,解压后确认根目录下存在.runtimeconfig.json和你的启动DLL文件,无嵌套文件夹。
  • 部署完成后,查看Web App的日志流(Azure门户 -> 你的Web App -> 监控 -> 日志流),确认应用已正确加载启动DLL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:33:19