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

Linux容器部署Net5(dotnet-isolated)Azure Function报目录不存在错误

问题定位

报错核心原因是跨平台路径分隔符不兼容:
你看到的错误路径/home\site\wwwroot/同时包含了Linux用的正斜杠/和Windows用的反斜杠\,Linux文件系统只会把正斜杠识别为路径分隔符,反斜杠会被当作普通文件名字符,自然找不到对应目录。
从错误栈可以直接定位到问题点:CustomWorkerHostBuilderExtensions.BuildConfiguration方法(对应Startup.cs第94行),这里的路径处理逻辑是Windows环境下的写法,本地Windows运行正常,部署到Linux容器就会触发路径找不到的错误。

修复方案

按以下顺序调整即可:

  • 打开Startup.cs,定位到第94行附近的路径处理代码,删掉所有硬编码的反斜杠路径写法,比如手动拼的\site\wwwroot这类字符串全部清理掉。
  • 所有路径拼接统一使用Path.Combine()方法,这个方法会自动根据当前运行的操作系统匹配正确的路径分隔符,比如要拼接wwwroot路径就写Path.Combine("/home", "site", "wwwroot"),不要手动加任何斜杠分隔符。
  • 不要硬编码应用根目录路径,直接从宿主上下文获取:在你的ConfigureCustomFunctionsWorker逻辑里,通过HostBuilderContext.HostingEnvironment.ContentRootPath拿到当前应用的运行根目录,再基于这个路径拼接配置文件、资源文件的路径,不要写死/home/site/wwwroot,避免后续基础镜像路径调整后再次触发同类问题。
  • 检查所有加载配置文件的代码,比如AddJsonFile的传参,不要出现硬编码反斜杠的路径,统一基于ContentRootPath用Path.Combine拼接。
无需调整的部分

你当前Dockerfile里的配置是正确的:

  • WORKDIR设置的/home/site/wwwroot路径格式符合Linux规范
  • 环境变量AzureWebJobsScriptRoot=/home/site/wwwroot配置正确
  • 项目文件、函数业务代码本身没有路径相关问题,不需要修改

内容的提问来源于stack exchange,提问作者O'Neil Tomlinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:01:15