.Net Core API считывает содержимое из файла Json

#.net #.net-core #webapi

#.net #.net-core #webapi

Вопрос:

Я пытаюсь прочитать содержимое из файла json.Net core API и присваивает список и использует его для выполнения бизнес-логики.

Слои API:

Проект -> Бизнес -> Репозиторий -> БД

Мне нужно прочитать содержимое из файла json на бизнес-уровне. Содержимое файла не будет часто меняться. Я подумываю о чтении файла в конструкторе класса бизнес-уровня.

Вопросы:

  1. Нужно ли хранить этот файл в папке App_Data?
  2. Могу ли я использовать HttpContextAccessor в конструкторе бизнес-уровня и читать содержимое?

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

Комментарии:

1. * 1. Это зависит от вашей цели, если вы хотите выполнять операции CRUD, я предлагаю вам сохранить файл в папке App_Data , иначе это не так важно. * 2. Да, вы можете использовать HttpContextAccessor . Вам нужно внедрить его в свой класс (на бизнес-уровне), а затем вы можете использовать его в своих методах

2. Привет @EngincanVeske, спасибо за ваш вклад. Я пытаюсь использовать System. Ввод-вывод без HttpContextAccessor.

Ответ №1:

Нужно ли хранить этот файл в папке App_Data?

Это полностью зависит от вашего предполагаемого использования файла. Если это статические данные или конфигурация, которые редко меняются, вы можете сохранить их в своем проекте и настроить свой проект на копирование его в папку сборки. Это можно сделать в Visual Studio 2019, выбрав в качестве опции «Всегда копировать» или «Копировать, если новее» Copy to Output Directory ., или .csproj непосредственно в файле.

Могу ли я использовать HttpContextAccessor в конструкторе бизнес-уровня и читать содержимое?

Вы можете, зарегистрировав его .Add<Transient|Scoped|Singleton>() в своем Starup.ConfigureServices . Обратите внимание, что это затрудняет использование этой службы бизнес-уровня в контексте без запроса (например, с запланированной задачей).

Однако, если файл находится на том же компьютере, что и приложение, я не понимаю, зачем вам нужно HttpContext его читать. Все, что вам нужно System.IO , System.Text.Json это пространства имен и .

Комментарии:

1. Привет @Connor Low, спасибо за ваши предложения. Я понимаю вашу точку зрения на использование System.IO . вы правы, мне не нужен HttpContextAccessor, и это можно сделать с помощью System. Сам ввод-вывод.