Проблемы с чтением файла JSON в другом проекте - PullRequest
0 голосов
/ 17 февраля 2019

Проблемы с чтением файла JSON в другом проекте

Ребята, у меня проблемы с чтением определенного файла Json, который находится в другом проекте.Я сделал пример проекта, который имеет следующую структуру.Sample.UI.MVC, Sample.Infra.Data, Sample.Domain, Sample.Application.В слое Sample.UI.MVC я инициализирую в файле Startup.cs класс из проекта Sample.Infra.Data, который динамически генерирует семена в моей базе данных.Однако возникает ошибка, поскольку EF Core пытается извлечь файл JSON внутри слоя Sample.UI.MVC, а не внутри Sample.Infra.Data.

Я использую Asp Net Core 2.2 с кодом VSSeed \ Seed.cs

namespace Sample.Infra.Data.Seed
{
    public class Seed
    {
       private readonly DataContext _context;
       private readonly IHostingEnvironment hostingEnvironment;
       private readonly UserManager<Usuario> _userManager;

    public Seed(DataContext context, IHostingEnvironment hostingEnvironment)
    {
        _context = context;
        hostingEnvironment = hostingEnvironment;
        // _userManager = userManager;

    }

    public void SeedData()
    {

        try
        {
            // if (!_userManager.Users.Any())
            // {



            var userData =  File.ReadAllText($"json/UserSeedData.json");
                var users = JsonConvert.DeserializeObject<List<Usuario>>(userData);
                AddNewType(users);
            // }
            _context.SaveChanges();

        }
        catch (Exception ex)
        {

            Console.WriteLine($"erro: {ex.Message}");
        }
     }
   }
}

Но я получаю ошибку:

Не удалось найти часть пути
'D: \ App \ projects \ csharp \asp \ core \ Sample.UI.MVC \ json \ UserSeedData.json '.

Код Seed.cs:

Code Seed.cs

Папка просмотра Json:

View Folder Json

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Работающий проект (где у вас есть Startup.cs) Sample.UI.MVC, и этот файл должен находиться в этом каталоге.Однако я думаю, что вы можете указать полный путь к проекту, и он должен работать.

Попробуйте найти способ получить полный путь к вашему проекту и передать Sample.Infra.Data путь к каталогу внутри File.ReadAllText(...).

0 голосов
/ 17 февраля 2019

Это не проблема JSON, это не проблема C #, это не проблема .Net Core 2x.

Проблема заключается в следующем:

В: Есливы пытаетесь прочитать файл по относительному пути, например, File.ReadAllText($"json/UserSeedData.json");, тогда где искать файл .exe?

A: Он попытается найти текстовый файл "UserSeedData.json" в каталоге "json ", внизу везде, где запущен ваш .exeFile.ReadAllText().

ПРИМЕР:

https://www.c -sharpcorner.com / article / setting-and-read-values-from-app-settings-json-in-net-core /

См. также:

Совместное использование файлов конфигурации appsettings.json между проектами в ASP.NET Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...