Получение настроек конфигурации 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];