[ASP.NET Core] 透過選項模式讀取設定
之前有提過用bind的方式讀取配置,並透過DI注入使用
這篇透過選項模式,讓注入的設定也能跟著資料改變而更新
1.在appsetting準備要使用的設定
2.在startup呼叫service.Configure註冊設定
3.使用端注入IOption<MyConfig>來使用設定,需要先呼叫Value才是MyConfig的實體
4.這時候的Config還不會隨著設定檔更新內容,每次拿到的值都是相同的
5.這次我們註冊一個Scope的Server,內部會注入MyConfig並印出內容,會注意到這邊注入Server的是IOptionsSnapshot<MyConfig>,為了讓我們可以取得更改後的設定
6.run起來嘗試更改設定,重新打接口,會發現拿到新的設定值了
7.接著試著把Server改成Singleton,再run起來,可以成功的拿到一個exception
8.這次把注入的IOption改成IOptionsMonitor,run起來並修改設定值,可以發現每次的內容都會隨著設定更新了
- 若注入的服務是Scope,則使用 IOptionsSnapshot 注入設定
- 若注入的服務是Singleton,則使用 IOptionsMonitor 注入設定
9.另外如果需要改變每次注入的設定值,可以從Startup的ConfigureServices對設定做做手腳
Sampel Code https://github.com/ianChen806/ConfigSamplePlus/tree/master
微軟文件 https://docs.microsoft.com/zh-tw/aspnet/core/fundamentals/configuration/options?view=aspnetcore-3.1