Получение настроек конфигурации ConnectionStrings из appsettings.json

В моем классе репозитория у меня есть объект Config, и похоже, что моя строка подключения находится под:

Config > Providers > Microsoft.Configuration.Json.JsonConfigurationProvider > Data > ConnectionStrings.myConnectionString

Это то, что мой appsettings.json похоже:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "myConnectionString": details..."
  }
}

Я пытаюсь читать myConnectionString следующим образом, который не работает:

var cs = _config.GetSection("ConnectionStrings.myConnectionString").value;

Что я делаю неправильно?

ОБНОВЛЕНИЕ: Почему-то я не вижу GetValue() метод. я использую ASP.NET Core 2.0,

2 ответа

Решение

Кажется, проблема заключается в пути строки, которую вы передаете методу GetSection(). В соответствии с документацией по конфигурации ядра ASP.NET вы должны использовать "ConnectionStrings:myConnectionString" вместо "ConnectionStrings.myConnectionString".

Кроме того, если вы хотите получить значение напрямую, вы можете вместо этого использовать метод GetValue():

var cs = _config.GetValue("ConnectionStrings:myConnectionString", "");

Если вы предпочитаете, вы также можете использовать индексную нотацию как:

var cs = _config["ConnectionStrings:myConnectionString"];

Но я, честно говоря, нахожу первый подход более чистым и элегантным, поскольку метод GetValue() позволяет вам указать значение по умолчанию, если свойство не найдено в конфигурации.

API конфигурации предоставляет метод расширения для IConfiguration упростить чтение ConnectionStrings раздел:

// using Microsoft.Extensions.Configuration;

string connectionString = _config.GetConnectionString("myConnectionString");

что это делает return configuration?.GetSection("ConnectionStrings")?[name];

Другие вопросы по тегам