
.net core 配置变更监听
场景
- 需要记录配置源的变更时
- 需要在配置数据变更时出发特定操作时
关键方法
IChangeToken IConfiguration.GetReloadToken()
简单示例
项目结构
修改内容
Program.cs
var builder = new ConfigurationBuilder();
builder.AddJsonFile("appsetting.json",optional:false,reloadOnChange:true);
var configurationRoot = builder.Build();
IChangeToken changeToken = configurationRoot.GetReloadToken();
changeToken.RegisterChangeCallback(state => {
Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
}, configurationRoot);
Console.ReadKey();
运行结果
问题的原因是:changeToken这个对象只能注册一次
解决问题
微软提供了特定的解决方法,修改代码如下:
var builder = new ConfigurationBuilder();
builder.AddJsonFile("appsetting.json",optional:false,reloadOnChange:true);
var configurationRoot = builder.Build();
ChangeToken.OnChange(() => configurationRoot.GetReloadToken(), () => {
Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
});
Console.ReadKey();
运行结果(更改多次没有问题)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术
bk