但愿给你3-5分钟的碎片化学习,多是坐地铁、等公交,聚沙成塔,水滴石穿,谢谢关注。git
你们知道一般咱们修改网站的配置文件好比,webconfig的时候,网站须要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就能够看到效果以下图所示:github
上一节当中咱们使用IOption来做为注入,此次咱们改为IOptionSnapshot,注意若是咱们是在Controller里也是同样的,见下图web
修改成IOptionsSnapshot后,便可达到热更新,很是简单。json
咱们来看下ASP.NET Core内部是如何作到的?app
如上图所示,咱们增长了一行代码:函数
builder.AddJsonFile("appsettings.json", false, true);
这里咱们重写并覆盖了WebHost内部的CreateDefaultBuilder方法,而且设置了两个bool型参数,其实咱们也能够不作重写,也就是上面的代码注释掉学习
同样能达到热更新的目的。网站
那么,到底WebHost这个静态方法内部作了哪些工做,咱们一块儿访问下面源码链接:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs,看下内部都作了些什么。ui
找到函数CreateDefaultBuilderblog
咱们看到关键代码:
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
其中optional和reloadOnChange默认为true,这就是问题的关键,内部已经另起进程,自动帮咱们作配置改变的事件监听了,这就是不作重写覆盖同样能达到热更新的目的所在。
覆盖的目的是,咱们有时候配置文件不必定都写在appsettings.json里面,有可能写在自定义的配置文件罢了。
我是IT人张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您的关注。