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

在Linux版Azure App Service中运行.NET Core 3.1 WebAPI启动失败

解决Linux版Azure App Service上.NET Core 3.1自包含部署启动失败问题

问题根源

启动失败的核心原因是.NET Core 3.1依赖ICU包提供全球化支持,虽然你用了自包含部署,但受限于旧版本特性或Azure Linux App Service基础环境,导致组件无法被找到;另外Linux版Azure App Service本身基于Docker容器运行,所以日志带docker字样是平台默认机制,无需纠结。

快速解决办法

启用全球化不变模式

直接修改你的csproj文件,取消注释InvariantGlobalization配置项:

<InvariantGlobalization>true</InvariantGlobalization>

重新发布Linux-x64自包含包并部署到Azure即可。这个模式会关闭非必要的全球化功能,适合不需要多语言/区域特定处理的WebAPI,能立刻解决启动问题。

保留全球化支持的解决办法

如果你的API需要处理多语言、区域格式化等全球化场景,确保自包含部署包含ICU依赖:

  1. 发布时确认使用命令:dotnet publish -c Release -r linux-x64 --self-contained true
  2. 在csproj中添加以下NuGet包引用:
<PackageReference Include="Microsoft.NETCore.Platforms" Version="3.1.0" />
<PackageReference Include="System.Globalization.Invariant" Version="3.1.0" />

重新发布后部署即可。

长远解决方案

.NET Core 3.1已停止官方支持,不再接收安全更新和bug修复。建议升级到.NET 6或更高的长期支持(LTS)版本,新版本对Linux环境的兼容性大幅提升,能从根源避免这类旧版本依赖问题。

关于Docker日志的说明

Linux版Azure App Service由Azure托管的Docker容器运行,因此日志文件会带有docker标识,这是平台运行的默认方式,和你是否自行使用Docker无关,无需关注。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:35:05