Как лучше всего читать текстовый файл с сервера в asp.net-mvc

В одном из моих действий контроллера мне нужно прочитать текстовый файл, в котором есть куча справочных данных. Сейчас я просто помещаю его в каталог «/Content».

Мои вопросы:

  1. Это «правильное» место для размещения этого файла или мне следует поместить его в другой каталог?
  2. Как лучше всего читать текстовый файл в asp.net-mvc, который находится на сервере?

person leora    schedule 05.07.2011    source источник
comment
право зависит от многих вещей; размер, характер, частота обновления и т. д.   -  person Marc Gravell    schedule 05.07.2011
comment
используйте эту библиотеку, которую легко реализовать в asp.net filehelpers.com   -  person rahularyansharma    schedule 05.07.2011
comment
В самом деле. использовать библиотеку для чтения текстового файла?!   -  person    schedule 05.07.2011


Ответы (2)


Если файл не должен быть доступен напрямую через URL-адрес, вы должны поместить его в App_Data.

Для чтения просто используйте:

var fileContents = System.IO.File.ReadAllText(Server.MapPath(@"~/App_Data/file.txt"));
person mathieu    schedule 05.07.2011
comment
если файл должен быть доступен для общего доступа, поместите его в папки Content или Upload (если загружены) - person mare; 05.07.2011
comment
Спасибо за совет. HostingEnvironment.MapPath(@~/App_Data/file.txt) также работает, если сервер не так легко найти. - person Hong; 12.05.2014
comment
У меня не работает, потому что эти результаты включают маршрутизацию URL-адреса. - person Mike de Klerk; 24.12.2015
comment
У меня не работает, когда я публикую проект на сервере, но в режиме отладки с использованием HostingEnvironment.MapPath работает - person Hossein Narimani Rad; 21.09.2016
comment
Существуют ли какие-либо архитектурные проблемы для простого создания ViewBag.Property в самом файле cshtml или содержимое этого файла должно обслуживаться контроллером? У меня есть несколько файлов со статическим текстом для определенных страниц (бедняга CMS), и я не думаю, что это хорошо подходит для базы данных, потому что данные редко КОГДА-ЛИБО изменяются. - person DtechNet; 13.02.2017

Хорошо, так это работает для меня (VS2017)

  1. Задайте для действия сборки файла.txt значение Content.
  2. Убедитесь, что для параметра Копировать в выходной каталог не установлено значение «Не копировать».
  3. Используйте HostingEnvironment.MapPath(@"~/App_Data/file.txt") (спасибо за комментарий Хонга)

    var fileContents = 
        System.IO.File.ReadAllText(HostingEnvironment.MapPath(@"~/App_Data/file.txt"));
    
person Hossein Narimani Rad    schedule 21.09.2016
comment
Кажется, это ответ на 2017+ - person MickyD; 23.02.2017