C# 从Asp.Net核心应用程序设置获取值
在Asp.Net Core 3.1应用程序上,我有以下关于AppSettings的部分: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
"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
对象呢?或者一次读取整个数组?您可以使用egGet
或Bind
在启动时加载强类型对象,向DI注册并根据需要注入它们。您应该能够使用configurration.GetSection(“Logins”).Get()
加载整个数组