在.net-core中读取文件内容的最佳方法是什么

时间:2019-04-14 03:05:49

标签: api .net-core

我正在.net-core API中设置电子邮件发件人。我想在我的项目中将电子邮件模板另存为html文件。我目前将它们保存在以下路径中

  

project-api / Templates / email-template1.html

     

project-api / Templates / email-template2.html

     

...

     

project-api / Templates / email-templateX.html

我想要的是阅读所需模板的内容。

到目前为止,我所做的是使用System.IO.File.ReadAllText,如下所示。

  

System.IO.File.ReadAllText(@“ Templates / email-template1.html”);

如果我在计算机上进行开发,则能够读取内容文件,因为当前文件夹存在。但是,如果我发布代码,则该文件夹将不存在,并会导致以下错误。

  

找不到路径的一部分   '/var/www/Templates/email-template.html'

读取模板文件的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

我将模板放置为 EmbeddedRessource ,如下所示:

enter image description here

在代码中,我读取了嵌入式资源,如:

var assembly = typeof(<GETYOURASSEMBLY>).GetTypeInfo().Assembly;
var stream = assembly.GetManifestResourceStream("<RESSOURCENAME>.EmailTemplates.NewApprovalRequest.html");
var reader = new StreamReader(stream);
var template = reader.ReadToEnd();

唯一棘手的事情是为您的资源获取正确的名称:
(用您的值替换<RESSOURCENAME>enter image description here

答案 1 :(得分:0)

您的静态内容必须在wwwroot文件夹中,并在statup.cs中设置此配置。

public void Configure(IApplicationBuilder app) 
{
    app.UseStaticFiles(); 
}