1

在 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")

但这不起作用......我怎样才能得到这些值?

4

1 回答 1

2

所有 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"]
于 2020-09-18T15:56:24.537 回答