【问题标题】:Getting ConnectionStrings config settings from appsettings.json从 appsettings.json 获取 ConnectionStrings 配置设置
【发布时间】:2018-04-24 21:27:06
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    // using Microsoft.Extensions.Configuration;
    
    string connectionString = _config.GetConnectionString("myConnectionString");
    

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

    【讨论】:

      【解决方案2】:

      问题似乎在于您传递给 GetSection() 方法的字符串路径。根据ASP.NET Core Configuration documentation,您应该使用“ConnectionStrings:myConnectionString”而不是“ConnectionStrings.myConnectionString”。

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

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

      如果您愿意,也可以将索引表示法用作:

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

      但老实说,我发现第一种方法更简洁优雅,因为 GetValue() 方法允许您指定默认值,以防在配置中找不到该属性。

      【讨论】:

      • 谢谢!使用冒号解决了这个问题。我也想使用GetValue() 方法,但由于某种原因,我无法使用它。请参阅原始帖子中的更新。再次感谢您的帮助。
      • 该方法位于 Microsoft.Extensions.Configuration 命名空间中。你在用吗?如果没有,请尝试,然后您应该可以访问它。
      • 它在那个命名空间中,但它实际上是通过 Microsoft.Extensions.Configuration.Binder 进行的扩展。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多