当前测试是在.net core控制台应用程序下进行。
首先创建一个json文件,config.json内容如下。
{
"name": "config",
"redisConfig": {
"host": "redis.stg",
"port": 6379,
"userName": "practice",
"passWord": "online"
}
}
注意将其属性设置为如果较新则复制,这样文件才会出现在程序生成的文件夹下。
引用对应nuget程序包
NuGet\Install-Package Microsoft.Extensions.Configuration -Version 6.0.1
NuGet\Install-Package Microsoft.Extensions.Configuration.Json -Version 6.0.0
进行文件读取测试
static void Main(string[] args)
{
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddJsonFile("config.json", optional:false, reloadOnChange:true);
IConfigurationRoot root = builder.Build();
string name = root["name"];
Console.WriteLine($"name:{name}");
string redisHost = root.GetSection("redisConfig:host").Value;
Console.WriteLine($"redisHost:{redisHost}");
}
输出如下:
name:config
redisHost:redis.stg
其中builder.AddJsonFile("config.json", optional:false, reloadOnChange:true);为添加配置json文件。
第一个参数为创建的json文件
第二个参数为是否校验文件真实性,如为false则json文件不存在会报错,为true即使文件不存在程序也能正常执行,但是获取的配置值均为空
第三个参数为在配置文件发生变更是否重新加载
也可以建立实体对象接受所有配置
class Config
{
public string Name { get; set; }
public RedisConfig RdsConfig { get; set; }
}
class RedisConfig
{
public string Host { get; set; }
public int Port { get; set; }
public string UserName { get; set; }
public string PassWord { get; set; }
}
需要引用如下包
NuGet\Install-Package Microsoft.Extensions.Configuration.Binder -Version 6.0.0
获取方式如下:
static void Main(string[] args)
{
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddJsonFile("config.json", optional:false, reloadOnChange:true);
IConfigurationRoot root = builder.Build();
RedisConfig redisConfig = root.GetSection("redisConfig").Get<RedisConfig>();
Console.WriteLine($"redisHost:{redisConfig.Host}");
Config config = root.Get<Config>();
Console.WriteLine($"name:{config.Name}");
}