ASP NET CORE GetConnectionString не работает

Я новичок в ASP NET CORE и пишу новый веб-API. Я не могу получить строку подключения из файла appsettings.json и получаю исключение ArgumentNullException. Это код в моем классе Startup:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddDbContext<MyDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MyDBConnection")));
        ...
    }
}

Это мой файл appsettings.json:

{
  "ConnectionStrings": {
    "MyDBConnection": "..."
  },
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
       "LogLevel": {
          "Default": "Warning"
       }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}

Что мне не хватает?

РЕДАКТИРОВАТЬ: это также мой класс Program.cs:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>();
}

person Nicolas P    schedule 27.02.2019    source источник
comment
Ваш код выглядит хорошо для меня, единственное, что я бы изменил, это вызвать services.AddMvc() после services.AddDbContext (фактически после регистрации любой другой службы).   -  person Isma    schedule 27.02.2019
comment
Ставлю в конец, после регистрации другого сервиса, но ничего не меняется   -  person Nicolas P    schedule 27.02.2019
comment
@NicolasP Тогда где-то что-то не так. Можете ли вы дать удаленный доступ с помощью Team Viewer, чтобы я мог это исправить.   -  person TanvirArjel    schedule 27.02.2019
comment
Я думаю, что проблема в Directory.GetCurrentDirectory(), что может вызвать проблемы с отладкой и убедиться, что путь правильный.   -  person A_kat    schedule 27.02.2019
comment
@AntoniosKatopodis да, это так. Я удалил его, и теперь кажется, что он работает, спасибо!   -  person Nicolas P    schedule 27.02.2019
comment
Чтобы проверить, связано ли это с InProcess и OutOfProcess. обратитесь к ASP .NET Core Module и проверьте доступные обходные пути In-Process hosting Directory.GetCurrentDirectory( ) местоположение № 4206   -  person Edward    schedule 28.02.2019


Ответы (1)


Просто чтобы ответить на это. Directory.GetCurrentDirectory() получит расположение корзины/отладки или релиза.

Это означает, что это не будет местом проекта. Таким образом, он не может найти application.json, а также не сможет найти ваши представления MVC позже.

person A_kat    schedule 27.02.2019