ASP.NET?Core選項接口介紹
首先要了解 ASP.NET Core 中的配置,請點擊這里了解:http://m.fzitv.net/article/238451.htm
1,選項接口
ASP.NET Core 中的選項接口,一共有三個,分別是:
IOptions<TOptions>IOptionsSnapshot<TOptions>IOptionsMonitor<TOptions>
這三種方式都可以獲取到配置,區(qū)別在于生命周期和文件監(jiān)控等。
2,注入配置與IOptions
首先我們創(chuàng)建一個 ASP.NET Core API 項目,添加一個 test.json 文件,內(nèi)容如下:
{
"Title": "測試",
"Name": "測試測試"
}再創(chuàng)建一個與之對應的模型類:
public class TestModel
{
public string Title { get; set; }
public string Name { get; set; }
}然后在 Startup 的 ConfigureServices 方法中加上:
services.Configure<TestModel>(new ConfigurationBuilder().AddJsonFile("test.json").Build());這樣就可以自動注入配置服務了。那么我們?nèi)绾谓邮者@個配置呢?
我們可以先使用 IOptions<T> 來接收。
添加一個控制器,名字隨意,其內(nèi)容如下:
public class TestController : ControllerBase
{
private readonly TestModel _options;
public TestController(IOptions<TestModel> options)
{
_options = options.Value;
}
}這樣就可以接收接入的配置了。
這就是 IOptions<TOptions> 的使用。
IOptions<TOptions> 有以下特征:
不支持:
- 在應用啟動后讀取配置數(shù)據(jù)。
- 命名選項
可以:
- 注冊為單一實例且可以注入到任何服務生存期。
也就是說,在應用啟動前就已經(jīng)讀取配置文件生成對象(單一實例)。當然,后續(xù)如果修改了配置文件(.json),也不會影響這個對象的。
3,IOptionsSnapshot
文檔解釋:通過使用 IOptionsSnapshot<TOptions>,針對請求生存期訪問和緩存選項時,每個請求都會計算一次選項。
IOptionsSnapshot 的生命作用域是 scoped ,在一個請求周期內(nèi)有效。
其它不變,使用時:
private readonly TestModel _options;
public TestController(IOptionsSnapshot<TestModel> options)
{
_options = options.Value;
}由于 IOptionsSnapshot 每次請求都會進行更新,因此配置文件變更后,可以及時獲得更新。
IOptionsMonitor 則略有不同:
public class TestController : ControllerBase
{
private readonly IOptionsMonitor<TestModel> _options;
public TestController(IOptionsMonitor<TestModel> options)
{
_options = options;
}
[HttpGet("T")]
public ContentResult T()
{
return new ContentResult()
{
Content = _options.CurrentValue.Title
};
}
}IOptionsSnapshot 和 IOptionsMonitor 都可以檢測到配置文件的更改,但是 IOptionsSnapshot 每次請求都是一個新的對象,而 IOptionsMonitor 是單例模式。
到此這篇關(guān)于ASP.NET Core選項接口的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解VS2017 Linux 上.NET Core調(diào)試
這篇文章主要介紹了詳解VS2017 Linux 上.NET Core調(diào)試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
.Net MVC將Controller數(shù)據(jù)傳遞到View
這篇文章介紹了.Net MVC將Controller數(shù)據(jù)傳遞到View的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
ASP.NET數(shù)據(jù)綁定之GridView控件
這篇文章主要為大家介紹了ASP.NET數(shù)據(jù)綁定中的GridView控件,GridView控件的功能是在web頁面中顯示數(shù)據(jù)源中的數(shù)據(jù),對GridView控件感興趣的小伙伴們可以參考一下2016-01-01
asp.net下無法循環(huán)綁定投票的標題和選項的解決方法
asp.net下無法循環(huán)綁定投票的標題和選項與無法循環(huán)獲得用戶的選擇的解決方法。2010-12-12
.NET 6開發(fā)TodoList應用之實現(xiàn)接口請求驗證
在響應請求處理的過程中,我們經(jīng)常需要對請求參數(shù)的合法性進行校驗,如果參數(shù)不合法,將不繼續(xù)進行業(yè)務邏輯的處理。本文將介紹如何使用FluentValidation和MediatR實現(xiàn)接口請求驗證,需要的可以參考一下2021-12-12

