2.4配置的热更新「深刻浅出ASP.NET Core系列」

但愿给你3-5分钟的碎片化学习,多是坐地铁、等公交,聚沙成塔,水滴石穿,谢谢关注。git

你们知道一般咱们修改网站的配置文件好比,webconfig的时候,网站须要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就能够看到效果以下图所示:github

2.4配置的热更新「深刻浅出ASP.NET Core系列」

 

修改IOption为IOptionsSnapshot

2.4配置的热更新「深刻浅出ASP.NET Core系列」

 

上一节当中咱们使用IOption来做为注入,此次咱们改为IOptionSnapshot,注意若是咱们是在Controller里也是同样的,见下图web

2.4配置的热更新「深刻浅出ASP.NET Core系列」

 

修改成IOptionsSnapshot后,便可达到热更新,很是简单。json

内部机制

咱们来看下ASP.NET Core内部是如何作到的?app

2.4配置的热更新「深刻浅出ASP.NET Core系列」

 

如上图所示,咱们增长了一行代码:函数

builder.AddJsonFile("appsettings.json", false, true);

这里咱们重写并覆盖了WebHost内部的CreateDefaultBuilder方法,而且设置了两个bool型参数,其实咱们也能够不作重写,也就是上面的代码注释掉学习

2.4配置的热更新「深刻浅出ASP.NET Core系列」

 

同样能达到热更新的目的。网站

那么,到底WebHost这个静态方法内部作了哪些工做,咱们一块儿访问下面源码链接:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs,看下内部都作了些什么。ui

找到函数CreateDefaultBuilderblog

2.4配置的热更新「深刻浅出ASP.NET Core系列」

 

咱们看到关键代码:

config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

其中optional和reloadOnChange默认为true,这就是问题的关键,内部已经另起进程,自动帮咱们作配置改变的事件监听了,这就是不作重写覆盖同样能达到热更新的目的所在。

覆盖的目的是,咱们有时候配置文件不必定都写在appsettings.json里面,有可能写在自定义的配置文件罢了。

我是IT人张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您的关注。

相关文章
相关标签/搜索