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

C#控制台应用程序中如何获取文件相对路径

问题原因

HttpContext 是 ASP.NET Web 框架专属对象,仅在Web请求处理管道中生效,控制台应用未托管Web运行环境,不存在请求上下文,直接调用HttpContext.Current会返回空值触发报错。
Server.MapPath的作用是将Web应用的虚拟路径映射为服务端物理路径,仅适用于Web场景。非Web项目没有虚拟目录概念,不需要使用该方法解析路径。

可行方案

第一步:配置文件输出规则

右键项目中的/MailTemplate/template_mail.html,打开属性面板做如下设置:

  • 「生成操作」选择内容
  • 「复制到输出目录」选择如果较新则复制

注意:如果跳过该配置,编译后输出目录不会包含MailTemplate文件夹,运行时会触发文件找不到异常。

第二步:通过运行时API解析路径读取文件

使用运行时自带的路径API获取程序执行根目录,拼接相对路径后读取文件,代码兼容多操作系统:

using System.IO;

// 获取程序exe所在的根目录
string appBasePath = AppContext.BaseDirectory;
// 自动适配系统路径分隔符,拼接目标文件路径
string templatePath = Path.Combine(appBasePath, "MailTemplate", "template_mail.html");
// 读取文件内容
string content = File.ReadAllText(templatePath);

提示:不要手动拼接斜杠组合路径字符串,Path.Combine会自动适配Windows、Linux、macOS的路径分隔符规则,避免跨环境运行时报路径格式错误。
如果模板文件存放在输出目录之外的位置,只需要调整Path.Combine的参数即可,比如读取输出目录上一级的模板文件,可以写成Path.Combine(appBasePath, "../", "MailTemplate", "template_mail.html"),方法会自动处理路径层级跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:30:44