Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Asp.Net核心应用程序设置获取值_C#_Asp.net Core_Asp.net Core 3.1 - Fatal编程技术网

C# 从Asp.Net核心应用程序设置获取值

C# 从Asp.Net核心应用程序设置获取值,c#,asp.net-core,asp.net-core-3.1,C#,Asp.net Core,Asp.net Core 3.1,在Asp.Net Core 3.1应用程序上,我有以下关于AppSettings的部分: "Logins": [ { "Name": "Facebook", "Id": "fb_id", "Secret": "fb_secret" }, { "Name": &qu

在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")
Configuration.GetValue(“登录名:Facebook:Id”)

但这行不通。。。如何获取值?

所有ASP.NET核心配置都将转换为键值对。在您的示例中,最终的键值对如下所示:

  • 登录:0:Name
    =
    Facebook
  • 登录:0:Id
    =
    fb\u Id
  • 登录:0:Secret
    =
    fb\u Secret
  • 登录:1:Name
    =
    Google
  • 登录:1:Id
    =
    go\u Id
  • 登录:1:Secret
    =
    go\u Secret
如图所示,没有名为
Logins:Facebook:Id
的键,这是因为JSON结构使用数组。如果要按名称将提供程序作为目标,请更新JSON以使用以下结构:

“登录”:{
“Facebook”:{
“Id”:“fb_Id”,
“秘密”:“fb_秘密”
},
“谷歌”:{
“Id”:“go_Id”,
“秘密”:“秘密行动”
}
}
这将创建您期望的键值对,例如:

  • 登录:Facebook:Id
    =
    fb\u Id
  • Logins:Facebook:Secret
    =
    fb\u Secret
此外,由于这些值已经是字符串,如果愿意,您可以使用以下内容读取值:

Configuration["Logins:Facebook:Id"]

Logins
Facebook
是部分。与其读取字符串,为什么不读取整个
Facebook
对象呢?或者一次读取整个数组?您可以使用eg
Get
Bind
在启动时加载强类型对象,向DI注册并根据需要注入它们。您应该能够使用
configurration.GetSection(“Logins”).Get()
加载整个数组