为什么Docker中运行.NET Core时路径会自动添加'/app/'前缀?
路径自动追加
/app/前缀的原因分析 核心根因
路径格式与容器运行的操作系统规则不匹配,被系统判定为相对路径后自动拼接了当前工作目录,是该问题的核心触发原因。
你代码中定义的\\XXX.XXX.XXX.XXX\XXX\XXX\XXX\X.xml是Windows系统专属的SMB共享UNC路径格式,仅能在Windows环境下被识别为指向远程服务器的绝对路径。
具体触发逻辑
- 本地脱离Docker运行时环境为Windows,系统可以正确识别
\\开头的UNC路径为绝对共享路径,不会执行相对路径拼接逻辑。 - Docker容器使用了Linux类型的.NET基础镜像:Linux系统没有UNC路径的语法规则,所有不以
/开头的路径都会被判定为相对路径,默认会和当前进程的工作目录拼接。微软官方发布的.NET Linux基础镜像默认设置的工作目录就是/app,所以最终拼接成了你观测到的/app/\\XXX.XXX.XXX.XXX\XXX\XXX\XXX\X.xml错误路径。
次要排查方向(仅针对Windows容器场景)
如果确认你使用的是Windows容器仍出现该问题,可检查两项配置:
- 容器的工作目录是否被显式设置为
/app,路径识别失败后触发相对路径拼接 - 容器未配置SMB共享访问权限,系统识别UNC路径失败后降级为相对路径处理
内容的提问来源于stack exchange,提问作者AlpYuktug
相关产品推荐
相关产品推荐

