【问题标题】:Get values from Asp.Net Core AppSettings从 Asp.Net Core AppSettings 获取值
【发布时间】:2021-01-05 13:36:48
【问题描述】:

在 Asp.Net Core 3.1 应用程序中,我在 AppSettings 上有以下部分:

  "Logins": [
    {
      "Name": "Facebook",
      "Id": "fb_id",
      "Secret": "fb_secret"
    },
    {
      "Name": "Google",
      "Id": "go_id",
      "Secret": "go_secret"
    }
  ]

我正在尝试获取值,例如 Facebook 的 ID,所以我尝试了:

Configuration.GetValue<String>("Logins:Facebook:Id")

但这行不通……我怎样才能得到这些值?

【问题讨论】:

  • LoginsFacebook 是部分。而不是读取字符串,为什么不读取整个Facebook 对象呢?或者一次读取整个数组?您可以使用 GetBind 在启动时加载强类型对象,向 DI 注册并根据需要注入它们
  • 你应该可以使用Configurrattion.GetSection("Logins").Get&lt;MyLogin[]&gt;()来加载整个数组

标签: c# asp.net-core asp.net-core-3.1


【解决方案1】:

所有 ASP.NET Core 配置都转换为键值对。在您的示例中,您最终会得到如下所示的键值对:

  • Logins:0:Name = Facebook
  • Logins:0:Id = fb_id
  • Logins:0:Secret = fb_secret
  • Logins:1:Name = Google
  • Logins:1:Id = go_id
  • Logins:1:Secret = go_secret

如图所示,没有名为 Logins:Facebook:Id 的键,这是因为 JSON 结构使用数组。如果您想按名称定位提供程序,请更新 JSON 以使用以下结构:

"Logins": {
  "Facebook": {
    "Id": "fb_id",
    "Secret": "fb_secret"
  },
  "Google": {
    "Id": "go_id",
    "Secret": "go_secret"
  }
}

这将创建您期望的键值对,例如:

  • Logins:Facebook:Id = fb_id
  • Logins:Facebook:Secret = fb_secret

另外,因为这些值已经是字符串,如果你愿意,你可以使用类似这样的东西来读取值:

Configuration["Logins:Facebook:Id"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    相关资源
    最近更新 更多