从appsettings.json获取ConnectionStrings配置设置

时间:2018-04-24 21:27:06

标签: asp.net-core appsettings asp.net-core-configuration

在我的存储库类中,我有我的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

enter image description here

2 个答案:

答案 0 :(得分:1)

Configuration API为IConfiguration提供了扩展方法,以简化阅读ConnectionStrings部分:

// using Microsoft.Extensions.Configuration;

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

what it does is return configuration?.GetSection("ConnectionStrings")?[name];

答案 1 :(得分:-1)

问题似乎在于您传递给GetSection()方法的字符串路径。根据{{​​3}}你应该使用" ConnectionStrings:myConnectionString"而不是" ConnectionStrings.myConnectionString"。

另外,如果您希望直接检索该值,则可能更喜欢使用GetValue()方法:

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

如果您愿意,还可以使用索引表示法:

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

但老实说,我发现第一种方法更加干净和优雅,因为GetValue()方法允许您在配置中找不到属性时指定默认值。