一、配置appsettings.json
这里我就简单的随便写了一点东西*
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"JwtConfig": {
"Issuer": "www.adsfsadfasdf",
"Audience": "www.adsfsadfasdf",
"SecretKey": "nadjhfgkadshgoihfkajhkjdhsfaidkuahfhdksjaghidshyaukfhdjks"
},
"AllowedHosts": "*",
"IP": "http://10.0.10.158111"
}
二、写一个存储配置信息的容器
我这里写了一个示例,静态字段可供项目中其他地方使用,非静态的属性字段是用来默认提取appsettings.json配置信息的
public class MyIp
{
public string IP { get; set; }
public static string MyIP { get; set; }
}
三、配置信息热加载注册
我这是一个.net6.0的项目。
在项目的Program文件中,找到var app = builder.Build();这一行,在上面写注册信息,在下面写监听信息
//把配置文件注册到配置信息Configuration程序集中,设置文件可更改,文件更改重新加载属性为True
builder.Configuration.AddJsonFile("appsettings.json", true, true);
var app = builder.Build();
//app.Configuration.Get<MyIp>() 依赖注入MyIp IOC容器
MyIp.MyIP = app.Configuration.Get<MyIp>().IP;
Console.WriteLine(MyIp.MyIP);
//监听变化事件,设置委托为监听appJson文件变化,设置委托变化后执行事件
ChangeToken.OnChange(() => app.Configuration.GetReloadToken(), () =>
{
//重新绑定代码中配置信息
MyIp.MyIP = app.Configuration.Get<MyIp>().IP;
Console.WriteLine(MyIp.MyIP);
});
如图,我项目没有停止,更改配置文件信息,他实时加载了配置信息。