mot*_*deh 2 c# appsettings .net-core asp.net-core
我想从 appsettings.json 获取整个部分。
这是我的 appsettings.json:
{
"AppSettings": {
"LogsPath": "~/Logs",
"SecondPath": "~/SecondLogs"
}
}
Run Code Online (Sandbox Code Playgroud)
C#:
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(this.SettingsFilesName);
configuration = builder.Build();
Run Code Online (Sandbox Code Playgroud)
此语法工作正常并返回 "~/Logs" :
configuration.GetSection("AppSettings:LogsPath");
Run Code Online (Sandbox Code Playgroud)
但是我怎么能拥有所有的“AppSettings”部分?是否可以?
此语法不起作用并且 value 属性为 null。
configuration.GetSection("AppSettings");
Run Code Online (Sandbox Code Playgroud)
更新:
我没有模型并在课堂上阅读它。我正在寻找这样的东西:
var all= configuration.GetSection("AppSettings");
Run Code Online (Sandbox Code Playgroud)
并像使用它一样
all["LogsPath"] or all["SecondPath"]
Run Code Online (Sandbox Code Playgroud)
他们把他们的价值观还给我。
那是设计使然
和
var configSection = configuration.GetSection("AppSettings");
Run Code Online (Sandbox Code Playgroud)
在configSection不具有价值,只有一个键和一个路径。
当GetSection返回匹配部分时,Value不会填充。AKey和Path部分存在时返回。
例如,如果您定义了一个模型来将截面数据绑定到
class AppSettings {
public string LogsPath { get; set; }
public string SecondPath{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并绑定到该部分
AppSettings settings = configuration.GetSection("AppSettings").Get<AppSettings>();
Run Code Online (Sandbox Code Playgroud)
您会看到整个部分将被提取并填充模型。
这是因为在基于匹配属性名称与该部分中的键填充模型时,该部分将遍历其子项并提取它们的值。
var configSection = configuration.GetSection("AppSettings");
var children = configSection.GetChildren();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |