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

Azure部署C# API:自定义WebRoot目录(Documents)找不到问题求助

解决Azure部署后找不到Documents文件夹的问题

嘿,我之前也碰到过几乎一模一样的问题——本地测试完全正常,一部署到Azure就报找不到自定义WebRoot文件夹的错,主要是部署打包和路径适配这两个坑在搞鬼。下面给你一步步排查解决的办法:

1. 先确保Documents文件夹被打包进部署包

这是最常见的原因:你本地的Documents文件夹没被包含在上传到Azure的部署包里。

  • 右键项目里的Documents文件夹,打开属性面板
  • 把复制到输出目录改成如果较新则复制或者始终复制
  • 要是你习惯直接改.csproj文件,也可以加这段配置,确保所有Documents下的文件都被打包:
    <ItemGroup>
      <Content Include="Documents\**">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Content>
    </ItemGroup>
    
    这样部署时,Documents文件夹会自动跟着输出目录一起上传到Azure。

2. 修正路径逻辑,适配Azure的部署目录

Azure App Service的运行目录和你本地开发的目录完全不一样,直接用Directory.GetCurrentDirectory()很容易踩坑。建议改用程序集所在路径来定位根目录,这样不管部署到哪里都能找对位置:

public static void Main(string[] args)
{
    // 获取程序集所在的目录,这才是部署后的真实根目录
    var assemblyDir = Path.GetDirectoryName(typeof(Program).Assembly.Location);
    // 拼接出Documents的绝对路径
    var webRootPath = Path.Combine(assemblyDir, "Documents");

    var host = new WebHostBuilder()
        .UseKestrel()
        .UseWebRoot(webRootPath)
        .UseContentRoot(assemblyDir)
        .UseIISIntegration()
        .UseStartup<MyStartup>()
        .Build();
    host.Run();
}

3. 去Azure上验证文件是否真的存在

如果上面两步做完还是报错,直接去Azure上看看文件结构就清楚了:

  • 打开Azure Portal,进入你的App Service,找到高级工具点击Go,打开Kudu调试工具
  • 切换到Debug console > CMD,导航到site\wwwroot目录,看看有没有Documents文件夹,里面的文件是不是都在
  • 如果确实没有,要么是打包配置没生效,要么可以手动把Documents文件夹上传到这个目录先测试,确认是打包的问题还是代码的问题。

4. 注意Linux环境的大小写问题

要是你的App Service用的是Linux环境,得留意路径大小写——Windows本地不区分,但Linux是严格区分的。确保代码里写的"Documents"和实际文件夹名称大小写完全一致,别因为这点小细节卡壳。

按上面的步骤排查下来,应该就能解决问题了。

内容的提问来源于stack exchange,提问作者M A K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:14:06