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

Azure App Service Linux环境下.NET 7启动脚本未执行问题求助

解决Azure Linux App Service中.NET 7启动脚本未执行的问题

可能原因及对应解决方案

1. .NET 7环境启动命令优先级变更

Azure App Service针对.NET 7的Linux容器,默认会优先检测并运行dotnet <项目名>.dll,直接忽略自定义启动脚本。需要明确指定脚本作为入口命令:

  • 登录Azure门户,进入目标App Service的配置>常规设置,在启动命令栏填写脚本绝对路径,比如/home/site/wwwroot/你的脚本文件名.sh
  • 也可通过Azure CLI设置:
    az webapp config set --resource-group <你的资源组名称> --name <你的应用服务名称> --startup-file "/home/site/wwwroot/你的脚本文件名.sh"
    

2. 脚本缺少可执行权限

Linux环境下脚本无执行权限会直接无法运行,.NET 5环境可能默认赋予了权限,但.NET 7环境需要手动配置:

  • 打开App Service的Kudu Bash控制台(访问https://<你的应用服务名>.scm.azurewebsites.net/Bash)
  • 执行命令添加权限:
    chmod +x /home/site/wwwroot/你的脚本文件名.sh
    
  • 也可在部署流程(如GitHub Actions、Azure DevOps)中自动加入该权限设置命令。

3. .NET 7基础镜像的包管理工具差异

.NET 7的Linux基础镜像可能和.NET 5不同(比如部分镜像基于Alpine而非Debian/Ubuntu),导致apt-get命令无法执行:

  • 在Kudu控制台手动运行脚本中的每一条命令,排查报错情况
  • 若为Alpine镜像,替换包管理命令为apk:
    apk update && apk add libc6-compat icu-dev harfbuzz fontconfig freetype
    
  • 可在Azure门户配置>常规设置中查看运行时堆栈的详细镜像类型,确认后调整脚本。

4. 脚本语法错误

原脚本中apt-get install -y \ libicu-dev的反斜杠后存在多余空格,会导致命令解析失败,修正后的脚本如下:

#!/bin/bash

apt-get update && \
apt-get install -y libc6 -f -o APT::Immediate-Configure=0 && \
apt-get install -y libicu-dev libharfbuzz0b libfontconfig1 libfreetype6

dotnet Api.dll

验证方式

设置完成后重启App Service,通过以下方式确认脚本执行状态:

  • 在Azure门户的日志流中查看启动日志,确认脚本是否被调用、依赖是否安装成功
  • 进入Kudu控制台的/home/LogFiles目录,查看stdout.log和stderr.log的输出内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:45:24