我正在尝试从后台作业中读取一个已写在类文件中的电子邮件模板。我尝试使用HttpContext.Current.Server.MapPath("~/path")
,但由于HttpContext
无效,因此无效。
此外,我尝试使用System.Web.Hosting.HostingEnvironment.MapPath("~/path")
并且我正在获取路径,但是因为无法找到文件而导致错误。
我们的应用程序托管在共享主机中。
任何想法如何从C#Web应用程序中的类文件中读取文件内容。
答案 0 :(得分:0)
类文件已编译,不包含在内容中。这就是您无法访问模板的原因。如果要将模板作为属性访问,则在文件中创建一个类,并使用属性/字段公开模板。
public static class Templates {
public static string Email_Template = "{email template}";
}
我有类似的情况,我需要访问电子邮件的模板以及api的降价文档。
以下是我解决问题的方法。
在Web应用程序项目中创建 App_Data 文件夹。
在先前创建的文件夹中创建模板文件,并使用电子邮件模板填充该文件。我的 EmailTemplate.txt / Documentation.md
EmailTemplate.txt
{这是我的电子邮件模板}
假设您使用的是Visual Studio,请在文件的属性选项卡中将构建操作设置为内容
访问文件内容:
var path = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/EmailTemplate.txt");
var text = System.IO.File.ReadAllText(path);
//Do whatever formatting I needed to do with the template
如果HttpContext不起作用,那就试试吧
System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/EmailTemplate.txt");
但请记住,您需要将模板文件作为内容进行访问,以便可以访问它。