从 appsettings.json 获取 ConnectionStrings 配置设置

Getting ConnectionStrings config settings from appsettings.json

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

问题似乎出在您传递给 GetSection() 方法的字符串路径中。根据 ASP.NET Core Configuration documentation 你应该使用 "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");

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