【问题标题】:Need to access file content from class file of C# web Application需要从 C# Web 应用程序的类文件中访问文件内容
【发布时间】:2016-03-30 07:42:18
【问题描述】:

我正在尝试从已写入类文件的后台作业中读取电子邮件模板。我尝试使用HttpContext.Current.Server.MapPath("~/path"),但它不起作用,因为HttpContext 无效。

我也尝试使用System.Web.Hosting.HostingEnvironment.MapPath("~/path"),我正在获取路径,但由于找不到文件而引发错误。 我们的应用程序托管在共享主机中。

知道如何从 C# Web 应用程序的类文件中读取文件内容。

【问题讨论】:

  • 试试这样的Path.Combine(HttpRuntime.AppDomainAppPath, someFile);

标签: c# web hosting httpcontext


【解决方案1】:

类文件被编译并且不包含在内容中。这就是您无法访问模板的原因。如果您想将模板作为属性访问,请在文件中创建一个类,并使用一个属性/字段来公开模板。

public static class Templates {
    public static string Email_Template = "{email template}";
}

我有类似的情况,我需要访问电子邮件模板以及 api 的降价文档。

这是我解决问题的方法。

  • 在 Web 应用程序项目中创建 App_Data 文件夹。

  • 在之前创建的文件夹中创建了模板文件,并用电子邮件模板填充它。我的是 EmailTemplate.txt / Documentation.md

EmailTemplate.txt

{这是我的电子邮件模板}

  • 假设您使用的是 Visual Studio,在文件的属性选项卡中,将 Build Action 设置为 Content

  • 访问文件内容:

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");

但请记住,您需要将模板文件作为内容访问才能访问。

【讨论】:

  • 我的项目中有类似的设置,但是我创建了 Content 文件夹而不是 App_Data 文件夹,并将模板保存在 Content 文件夹下。我的构建操作也设置为内容。如果我不使用 App_Data 会有影响吗?
  • 是的。 App_Data 文件夹的预期用途是存储应用程序数据以供 Web 进程 访问。因此可以从应用程序代码中访问它。
猜你喜欢
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 2013-05-02
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多