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

.NET Core 5 Web API Docker容器提示AppSettings.json不存在问题求助

问题原因及解决方案

1. 大小写不匹配问题

Linux 系统(本次使用的容器基础镜像为 Ubuntu 20.04 focal)对文件名大小写完全敏感,而 Windows/macOS 默认大小写不敏感,因此本地运行正常的项目在容器中可能出现文件名识别问题。
你需要核对两处信息:

  • 代码中加载配置文件时填写的文件名,和容器内实际存在的文件名大小写是否完全一致。注意 .NET 默认的配置文件名为全小写的 appsettings.json,如果代码中写为 AppSettings.json 就会触发该错误。
  • 检查 HabitAPI.Api.csproj 文件中配置文件的复制规则,确认输出的文件名和代码中加载的名称完全匹配。

2. 文件权限不足问题

你在 Dockerfile 中使用非 root 用户 appuser 运行程序,即使文件实际存在,如果 appuser 没有该文件的读取权限,.NET 运行时也会抛出「文件不存在」的异常(底层无权限的系统调用会被上层逻辑包装为文件不存在错误)。
解决方法是在 Dockerfile 的 final 阶段增加权限修正指令,确保所有文件对运行用户可读:

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# 新增以下行,修正文件读取权限
RUN chmod -R a+r /app
ENTRYPOINT ["dotnet", "HabitAPI.Api.dll"]

3. 配置加载路径错误

检查 Program.cs 中的配置加载逻辑,确认没有写死本地绝对路径,也没有错误修改配置文件的加载根目录。你可以在配置构建代码前增加日志,输出当前工作目录和目录下的所有文件列表,确认路径是否符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:24:03