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

Azure App Service Linux自定义启动脚本被忽略,.NET7 API部署异常

.NET 7 Azure App Service Linux 启动脚本失效的解决办法

问题根源

Azure App Service 对.NET 7+的Linux容器启动逻辑做了调整——默认会自动识别项目的可执行文件或Program.cs入口,直接启动应用,跳过了自定义启动脚本的执行。而.NET 6及更早版本的容器还保持着原有的兼容逻辑,所以脚本能正常运行。

具体修复步骤

1. 强制指定启动命令

直接在Azure门户把启动脚本设为最高优先级:

  • 打开你的App Service资源页
  • 进入配置 > 常规设置,在启动命令栏填写./startup.sh(需确保脚本位于发布后的根目录)

2. 给脚本添加可执行权限

Linux环境下无执行权限的脚本无法运行,两种解决方式:

  • 在项目的.csproj文件中添加配置,发布时自动赋予权限:
<ItemGroup>
  <None Update="startup.sh">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <Executable>true</Executable>
  </None>
</ItemGroup>
  • 或者在启动脚本开头先修复权限,再执行后续操作:
chmod +x ./startup.sh
# 这里添加依赖安装命令,示例:
apt-get update && apt-get install -y your-dependency-package
# 显式启动.NET 7 API
dotnet YourApiProject.dll --urls=http://0.0.0.0:8080

3. 显式调用.NET程序

.NET 7容器会优先寻找默认应用入口,因此在启动脚本中必须明确写出应用启动命令,避免系统自动跳过脚本:
脚本末尾务必添加类似dotnet YourApiProject.dll的启动指令,带上端口参数能避免端口冲突问题。

4. 检查脚本存放位置

通过Kudu工具(https://<你的应用名>.scm.azurewebsites.net)的Debug Console查看文件结构,确认startup.sh位于发布包的根目录,而非子文件夹中,否则系统无法找到脚本。

验证方式

部署完成后,在Kudu的Log Stream中搜索startup.sh相关日志,如果出现Executing startup script 'startup.sh'的条目,说明脚本已被正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:31:18