[ASP.NET Core] 透過選項模式讀取appsetting

[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