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

.NET Core AWS Lambda函数读取本地Content文件夹文件路径问题

当然可以读取!问题出在路径配置上

完全没问题——你遇到的找不到路径的错误,是因为Lambda执行环境里的根目录/和你本地项目的目录结构不一样,直接用绝对路径/Content/email.html自然找不到文件。

为什么你的代码不生效?

Lambda部署后,你的项目文件会被打包到执行环境的特定目录下,而不是系统根目录/。你写的绝对路径指向的是Lambda系统的根目录,而非你的代码所在的目录,所以会报错。

正确的实现方式

你需要基于当前代码的运行目录来拼接文件路径,这里有两种可靠的方法:

方法1:使用AppContext.BaseDirectory(推荐)

这个属性会直接返回当前应用程序的基础目录,也就是Lambda部署后你的代码所在的位置,拼接路径非常稳定:

var htmlFilePath = Path.Combine(AppContext.BaseDirectory, "Content", "email.html");
string message = string.Empty;

using (var streamReader = new StreamReader(htmlFilePath))
{
    message = streamReader.ReadToEnd();
}

方法2:使用Directory.GetCurrentDirectory()

这个方法返回当前工作目录,在Lambda环境中同样能正确指向你的代码目录,用法类似:

var htmlFilePath = Path.Combine(Directory.GetCurrentDirectory(), "Content", "email.html");
string message = string.Empty;

using (var streamReader = new StreamReader(htmlFilePath))
{
    message = streamReader.ReadToEnd();
}

关键注意事项

  • 一定要确保Content文件夹和email.html文件会被包含在Lambda部署包中!
    • 在Visual Studio中:右键文件 → 属性 → 「复制到输出目录」选择「如果较新则复制」或「始终复制」。
    • 如果用.NET CLI或手动编辑.csproj:添加以下配置,确保文件被复制到输出目录:
      <ItemGroup>
        <Content Update="Content\email.html">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </Content>
      </ItemGroup>
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:55:23