从 Asp.Net Core AppSettings 获取值
Posted
技术标签:
【中文标题】从 Asp.Net Core AppSettings 获取值【英文标题】:Get values from 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")
但这行不通……我怎样才能得到这些值?
【问题讨论】:
Logins
和 Facebook
是部分。而不是读取字符串,为什么不读取整个Facebook
对象呢?或者一次读取整个数组?您可以使用 Get
或 Bind
在启动时加载强类型对象,向 DI 注册并根据需要注入它们
你应该可以使用Configurrattion.GetSection("Logins").Get<MyLogin[]>()
来加载整个数组
【参考方案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"]
【讨论】:
以上是关于从 Asp.Net Core AppSettings 获取值的主要内容,如果未能解决你的问题,请参考以下文章
在 asp net core 控制台应用程序中读取 appsettings
将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api
从 ASP.NET Core 3.1 升级到 ASP.NET 5.0 后,User.Claims 为空
从 ASP.NET Core Blazor 中的 .NET 方法调用 JavaScript 函数