2015-12-23 9 views
0

Я пытаюсь прочитать шаблон электронной почты из фонового задания, которое было записано в файле класса. Я пытался использовать HttpContext.Current.Server.MapPath("~/path"), но это не сработало, так как HttpContext недействителен.Нужно получить доступ к содержимому файла из файла класса C# web Application

Также я попытался использовать System.Web.Hosting.HostingEnvironment.MapPath("~/path"), и я получаю путь, но он бросает ошибку, так как не удалось найти файл. Наше приложение размещено на общем хостинге.

Любая идея, как я могу прочитать содержимое файла из файла класса в веб-приложении C#.

+0

попробовать что-то вроде этого 'Path.Combine (HttpRuntime.AppDomainAppPath, некий-файл),' – MethodMan

ответ

0

Файлы классов скомпилированы и не включены в качестве содержимого. Вот почему вы не можете получить доступ к шаблону. Если вы хотите получить доступ к шаблону в качестве свойства, тогда создайте класс в файле и получите свойство/поле, отображающее шаблон.

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

У меня была аналогичная ситуация, когда мне нужен был доступ к шаблону для электронной почты, а также документация по уценке для api.

Вот как я решил свою проблему.

  • Создано 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"); 

Но помните, что вам нужно сделать файл шаблона доступным как контент, чтобы он был доступен.

+0

У меня есть подобный набор вверх в моем проекте, но вместо папки App_Data, я создал папку Content и хранятся шаблоны под содержимое папки. My Build Action также настроен на контент. Будет ли это важно, если я не использую App_Data? – user1841927

+0

Да. Предполагаемое использование папки «App_Data» предназначено для хранения данных приложения для ** веб-процесса ** для доступа. Таким образом, он может быть доступен из кода приложения. – Nkosi