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

.NET Core 6项目部署Linux服务器后路径错误问题求助

.NET Core 6部署Linux后路径错误的解决方法
  • 问题根源:代码里硬写了Windows专属的反斜杠\拼接路径,而Linux系统默认使用正斜杠/作为路径分隔符,这种写法会导致路径解析完全错误;同时直接用字符串拼接路径的方式本身不支持跨平台。

  • 解决步骤:

    1. 用Path.Combine拼接路径:这是.NET官方提供的跨平台路径拼接方法,会自动根据当前操作系统选择正确的路径分隔符,彻底避免平台兼容问题。
    2. 用WebRootPath读取wwwroot文件:ContentRootPath指向项目根目录,而wwwroot是静态文件专属目录,用_environment.WebRootPath获取该目录路径更准确。
    3. 确保wwwroot文件被正确发布:需要在项目配置中设置,保证发布时wwwroot下的文件被同步复制到Linux服务器上。

修改后的代码示例

// 获取wwwroot目录路径,专门用于读取静态文件
string webRootPath = _environment.WebRootPath;
string contentType = ".pdf";
string dt = DateTime.Now.ToString("dd_MM_yyyy_hh_mm_ss_ffffff");
string filename = $"{excel.SelectedService}_Answer_{dt}{contentType}";

// 用Path.Combine拼接Azure存储目录路径
var pathBuild = Path.Combine(_environment.ContentRootPath, "Azure");
if (!Directory.Exists(pathBuild))
{
    Directory.CreateDirectory(pathBuild);
}

// 用Path.Combine拼接HTML模板的完整路径
var templatePath = Path.Combine(webRootPath, "src", "Price_Template.html");
string templateHtml = System.IO.File.ReadAllText(templatePath);
var template = Handlebars.Compile(templateHtml);

补充发布配置

在项目的.csproj文件中添加以下配置,确保wwwroot下的所有文件都能被包含到发布包中:

<ItemGroup>
  <Content Include="wwwroot/**/*" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:35:16