1 入门
- 传统的web.config配置有缺点。比如,如果我们部署多台服务器,如果配置需要改变,那么我们就需要将每个服务器的配置文件改一遍。
- 为了兼容,仍然可以使用web.config和configurationManager类,但不推荐。
- .NET中的配置文件支持丰富的配置源,包括文件(json xml ini)等、注册表、环境变量、命令行、Azure key value等,还可以配置自定义配置源。可以跟踪配置的改变,可以按照优先级覆盖。
json文件配置
- 创建一个json文件,文件名随意,比如config.json,设置“如果较新则复制。”
- NuGet安装Microsoft.Extensions.Configuration和Microsoft Extensions.configuration.json
1. 简单方式读取
static void Main(string[] args)
{
ConfigurationBuilder builder = new ConfigurationBuilder();
// 将要读的json文件加进来
// optional 设置为false,如果找不到配置文件则会报错;设置为true,会显示值为空
// reloadOnChange 文件改变是否重新加载
// 这里需要注意一个点,程序读取的并不是我们项目中的json文件而是和exe在同一个目录下的复制的json文件
builder.AddJsonFile("config.json", optional: false, reloadOnChange: true);
IConfigurationRoot root = builder.Build();
string name = root["name"];
Console.WriteLine($"name: {name}");
string adderss = root.GetSection("proxy:address").Value;
Console.WriteLine($"address: {adderss}");
}
这里需要注意一个点,程序读取的并不是我们项目中的json文件而是和exe在同一个目录下的复制的json文件。即读取的不是图一,而是图二中的json文件。
2 绑定方式读取配置
- 可以绑定一个类,自动完成配置的读取
- 安装Microsoft.Extensions.Configuration.Binder
class Program
{
static void Main(string[] args)
{
ConfigurationBuilder builder = new ConfigurationBuilder();
// 将要读的json文件加进来
// optional 设置为false,如果找不到配置文件则会报错;设置为true,会显示值为空
// reloadOnChange 文件改变是否重新加载
// 这里需要注意一个点,程序读取的并不是我们项目中的json文件而是和exe在同一个目录下的复制的json文件
builder.AddJsonFile("config.json", optional: false, reloadOnChange: true);
IConfigurationRoot root = builder.Build();
// 绑定对象方式读取
Proxy proxy = root.GetSection("proxy").Get<Proxy>();
Console.WriteLine(proxy.Address + proxy.Port);
}
}
class Proxy
{
public string Address { get; set; }
public int Port { get; set; }
}
添加一个proxy类,类里面的属性和配置文件中的字段保持一致,然后就可以直接映射为一个对象。
上面介绍的这两种读取方式我们通常是不这么用的,以后会介绍更简单的方式,但是这两种也需要知道,需要了解。