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

Azure托管Linux Web服务部署后提示缺少.NET SDK问题排查

问题根源与解决方案

你的核心问题是错误使用了依赖.NET SDK的启动命令,而Azure App Service Linux的.NET运行时镜像默认仅包含Runtime,不附带SDK。

具体原因

从日志能明确看到执行了dotnet run命令:

[INFO]  Running user provided startup command...
[ERROR]  The command could not be loaded, possibly because:
[ERROR]    * You intended to execute a .NET application:
[ERROR]        The application 'run' does not exist.
[ERROR]    * You intended to execute a .NET SDK command:
[ERROR]        No .NET SDKs were found.

dotnet run是SDK专属命令,仅用于开发阶段直接运行项目源码;生产环境部署时,应该直接运行发布后编译好的DLL文件,这个操作只需要.NET Runtime就能完成。

修复步骤

  1. 移除错误的启动命令
    删除startUpCommand: 'dotnet run'配置,Azure的Oryx工具会自动检测你发布的Web项目,生成正确的启动脚本(自动执行dotnet YourWebApp.dll)。

  2. 明确指定运行时版本
    启用runtimeStack: 'DOTNETCORE|7.0'配置,确保Web App使用正确的.NET 7.0运行时,避免自动检测出现偏差。修改后的AzureWebApp任务如下:

    - task: AzureWebApp@1
      inputs:
        azureSubscription: 'my-serv-con'
        appType: 'webAppLinux'
        appName: 'app-name'
        package: '$(System.DefaultWorkingDirectory)/**/*.zip'
        runtimeStack: 'DOTNETCORE|7.0'
    
  3. 优化发布任务(可选)
    为确保发布包适配Linux环境,可给DotNetCoreCLI的publish命令添加参数,指定目标运行时:

    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        publishWebProjects: true
        arguments: '--configuration $(buildConfiguration) --runtime linux-x64 --self-contained false'
    

    --self-contained false表示依赖服务器上的Runtime,无需打包Runtime文件,节省部署包体积。

  4. 修正az webapp up部署命令
    使用az webapp up部署时,同样不需要指定dotnet run作为启动命令,Oryx会自动处理。确保命令里的运行时参数正确:

    az webapp up --sku F1 --name app-name --os-type linux --runtime "DOTNETCORE:7.0"
    

额外说明

  • 构建环境需要SDK是正常的,因为dotnet build和dotnet publish依赖SDK完成编译;但部署到App Service后,仅需Runtime即可运行发布后的应用。
  • 日志中显示的ASP .NETCore Version: 7.0.5证明服务器已具备正确的Runtime,问题完全出在启动命令的错误使用上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:44:55