ASP.NET?Core選項(xiàng)接口介紹
首先要了解 ASP.NET Core 中的配置,請(qǐng)點(diǎn)擊這里了解:http://chabaoo.cn/article/238451.htm
1,選項(xiàng)接口
ASP.NET Core 中的選項(xiàng)接口,一共有三個(gè),分別是:
IOptions<TOptions>IOptionsSnapshot<TOptions>IOptionsMonitor<TOptions>
這三種方式都可以獲取到配置,區(qū)別在于生命周期和文件監(jiān)控等。
2,注入配置與IOptions
首先我們創(chuàng)建一個(gè) ASP.NET Core API 項(xiàng)目,添加一個(gè) test.json 文件,內(nèi)容如下:
{
"Title": "測(cè)試",
"Name": "測(cè)試測(cè)試"
}再創(chuàng)建一個(gè)與之對(duì)應(yīng)的模型類(lèi):
public class TestModel
{
public string Title { get; set; }
public string Name { get; set; }
}然后在 Startup 的 ConfigureServices 方法中加上:
services.Configure<TestModel>(new ConfigurationBuilder().AddJsonFile("test.json").Build());這樣就可以自動(dòng)注入配置服務(wù)了。那么我們?nèi)绾谓邮者@個(gè)配置呢?
我們可以先使用 IOptions<T> 來(lái)接收。
添加一個(gè)控制器,名字隨意,其內(nèi)容如下:
public class TestController : ControllerBase
{
private readonly TestModel _options;
public TestController(IOptions<TestModel> options)
{
_options = options.Value;
}
}這樣就可以接收接入的配置了。
這就是 IOptions<TOptions> 的使用。
IOptions<TOptions> 有以下特征:
不支持:
- 在應(yīng)用啟動(dòng)后讀取配置數(shù)據(jù)。
- 命名選項(xiàng)
可以:
- 注冊(cè)為單一實(shí)例且可以注入到任何服務(wù)生存期。
也就是說(shuō),在應(yīng)用啟動(dòng)前就已經(jīng)讀取配置文件生成對(duì)象(單一實(shí)例)。當(dāng)然,后續(xù)如果修改了配置文件(.json),也不會(huì)影響這個(gè)對(duì)象的。
3,IOptionsSnapshot
文檔解釋?zhuān)和ㄟ^(guò)使用 IOptionsSnapshot<TOptions>,針對(duì)請(qǐng)求生存期訪(fǎng)問(wèn)和緩存選項(xiàng)時(shí),每個(gè)請(qǐng)求都會(huì)計(jì)算一次選項(xiàng)。
IOptionsSnapshot 的生命作用域是 scoped ,在一個(gè)請(qǐng)求周期內(nèi)有效。
其它不變,使用時(shí):
private readonly TestModel _options;
public TestController(IOptionsSnapshot<TestModel> options)
{
_options = options.Value;
}由于 IOptionsSnapshot 每次請(qǐng)求都會(huì)進(jìn)行更新,因此配置文件變更后,可以及時(shí)獲得更新。
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 都可以檢測(cè)到配置文件的更改,但是 IOptionsSnapshot 每次請(qǐng)求都是一個(gè)新的對(duì)象,而 IOptionsMonitor 是單例模式。
到此這篇關(guān)于ASP.NET Core選項(xiàng)接口的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET Core 2.0 WebApi全局配置及日志實(shí)例
下面小編就為大家分享一篇ASP.NET Core 2.0 WebApi全局配置及日志實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
asp.net下生成英文字符數(shù)字驗(yàn)證碼的代碼
用了asp.net隨機(jī)數(shù),獲取指定位數(shù)的字母或數(shù)字以后,進(jìn)行圖片輸出的驗(yàn)證碼函數(shù)。2009-12-12
.Net Core 使用NLog記錄日志到文件和數(shù)據(jù)庫(kù)的操作方法
這篇文章主要介紹了.Net Core 使用NLog記錄日志到文件和數(shù)據(jù)庫(kù)的操作方法,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07
ASP.NET中實(shí)現(xiàn)獲取調(diào)用方法名
這篇文章主要介紹了ASP.NET中實(shí)現(xiàn)獲取調(diào)用方法名的技巧,較為詳細(xì)的講述了相關(guān)的命名空間的調(diào)用及語(yǔ)句執(zhí)行順序,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
ASP.NET中RadioButtonList綁定后臺(tái)數(shù)據(jù)后觸發(fā)點(diǎn)擊事件
這篇文章主要介紹了ASP.NET中RadioButtonList綁定后臺(tái)數(shù)據(jù)后觸發(fā)點(diǎn)擊事件的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-05-05
MVC4制作網(wǎng)站教程第二章 用戶(hù)密碼修改2.3
這篇文章主要為大家詳細(xì)介紹了MVC4制作網(wǎng)站教程,用戶(hù)密碼修改功能的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式
這篇文章主要介紹了SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式,需要的朋友可以參考下2017-04-04
ASP.net中實(shí)現(xiàn)基于UrlRewrite的防盜鏈功能
這篇文章主要介紹了ASP.net中如何實(shí)現(xiàn)基于UrlRewrite的防盜鏈,需要的朋友可以參考下2014-03-03

