但願給你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年有餘,人不堪其憂,吾不改其樂,謝謝您的關注。