.net core使用配置文件
在 .net core中,配置文件的读取是通过IConfiguration来提供的,程序集是Microsoft.Extensions.Configuration
,对应的有一系列的实现,通过这些实现,可以读取Json/Xml/ini等类型的配置文件。
在本节示例中,我们使用Json配置文件做演示。
读取Json配置文件
Json是我们常用的配置文件格式,可以非常直观的体现配置文件的层级结构。
新建一个 .net core 控制台应用程序,并为项目添加appsettings.json
文件,文件内容如下:
{
"Name": "Jerry",
"option1": "value1_from_json",
"option2": 2,
"subsection": {
"suboption1": "subvalue1_from_json"
},
"wizards": [
{
"Name": "Gandalf",
"Age": "1000"
},
{
"Name": "Harry",
"Age": "17"
}
]
}
添加Microsoft.Extensions.Configuration.Json
引用,随后使用下面的代码创建IConfiguartion对象:
public static IConfiguration Configuration { get; set; }
//构建Configuration
var builder = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
使用IConfiguartion对象获取配置信息:
static void ReadConfiguration()
{
Console.WriteLine($"Name = {Configuration["Name"]}");
Console.WriteLine($"option1 = {Configuration["Option1"]}");
Console.WriteLine($"option2 = {Configuration["option2"]}");
Console.WriteLine($"suboption1 = {Configuration["subsection:suboption1"]}");
Console.WriteLine();
Console.WriteLine("Wizards:");
Console.Write($"{Configuration["wizards:0:Name"]}, ");
Console.WriteLine($"age {Configuration["wizards:0:Age"]}");
Console.Write($"{Configuration["wizards:1:Name"]}, ");
Console.WriteLine($"age {Configuration["wizards:1:Age"]}");
Console.WriteLine();
Console.WriteLine("Press a key...");
Console.ReadKey();
}
使用强类型读取配置信息:
static void ConvertConfiguration()
{
//读取整个配置文件
var appSettings = Configuration.Get<AppSettings>();
Console.WriteLine("AppSettings = ");
Console.WriteLine(JsonConvert.SerializeObject(appSettings, Formatting.Indented));
//读取某个节点
IList<Wizard> wizards = Configuration.GetSection("wizards").Get<IList<Wizard>>();
Console.WriteLine("wizards = ");
Console.WriteLine(JsonConvert.SerializeObject(wizards, Formatting.Indented));
Console.WriteLine("Press a key...");
Console.ReadKey();
}
== 注意:在1.0版本中使用Bind方法转换,2.0以后可以使用Get方法更加方便的获取强类型文件 ==
== 注意:当使用多个配置文件,且配置文件中包含相同的键时,后添加的配置文件中的键值将覆盖先添加的键值 ==
其它类型的配置文件使用方法相似,不再赘述。
参考文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/startup?view=aspnetcore-2.1