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

ASP.NET Core WebAPI在Docker环境运行时触发FileNotFoundException问题求助

问题原因
  • 核心是路径分隔符跨平台不兼容:你本地运行在Windows环境,\是合法的路径层级分隔符;而你的Docker镜像基于Linux内核的.NET镜像,系统默认路径分隔符为/,硬编码的.\Data\petronas.xlsx在Linux环境下会被识别为完整文件名的一部分,无法匹配到实际存在的/app/Data/petronas.xlsx路径。
  • 你的Dockerfile中已经通过COPY Data ./Data将Data目录复制到了容器的/app/Data路径下,文件复制逻辑本身没有问题。
解决方法

你可以任选以下任意一种方案修改代码:

方案1:使用.NET 跨平台路径拼接API(最推荐)

使用Path.Combine自动适配不同系统的路径分隔符,同时搭配AppContext.BaseDirectory获取程序根目录,避免相对路径的上下文歧义:

var filePath = Path.Combine(AppContext.BaseDirectory, "Data", "petronas.xlsx");
var lineitems = ConvertExcelToDataTable(filePath);

方案2:统一使用正斜杠作为路径分隔符

Windows环境也兼容正斜杠路径分隔符,直接修改硬编码的路径写法即可:

var lineitems = ConvertExcelToDataTable(@"./Data/petronas.xlsx");
验证方法

修改代码重新构建镜像运行后如果还有问题,可以执行以下命令进入容器确认文件是否存在:
docker exec -it <你的容器ID> ls /app/Data
正常会输出petronas.xlsx的文件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:36:04