欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net?Core?配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot

 更新時間:2022年09月02日 10:38:17   作者:一事冇誠  
這篇文章主要介紹了.Net?Core配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

眾所周知,appsetting.json 配置文件是.Net 的重大革新之心,拋開了以前繁雜的xml文件,使用了更簡潔易懂的json方式,簡直不要太舒服了!東西雖然好,但怎么在程序中讀取這個配置呢,是每個新手必須要跨過去的坑(當(dāng)然也是包括我這個菜狗子)。

遇事不明上注入,只要是遇到不知道怎么辦的事,首先要往注入方便想,框架有了這個配置文件,必然配備了簡單直接的讀取API,按照我的習(xí)慣,直接上代碼:

首先,我們在配置文件中,增加 Demo 配置節(jié)點(diǎn):

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Demo": {
    "Value1": "1",
    "Value2": "2",
    "Value3": "3",
    "Value4": "4"
  }
}

在需要用到配置文件的地方,注入 IConfiguration 服務(wù)接口

private readonly IConfiguration _configuration;

public ValuesController(IConfiguration configuration)
{
    _configuration = configuration;
}

通常,我們比較直接的方式是通過 GetSection 獲取對應(yīng)的配置節(jié)點(diǎn),然后再獲取對應(yīng)的配置項(xiàng)

var section = _configuration.GetSection("Demo");
var value1 = section.GetValue("Value1", "1");

如果 Demo 節(jié)點(diǎn)內(nèi)還有更深的節(jié)點(diǎn),GetSection 可以通過 : 深入到對應(yīng)的下一個節(jié)點(diǎn)

appsetting.json 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Demo": {
    "Value1": "1",
    "Value2": "2",
    "Value3": "3",
    "Value4": "4",
    "Model" {
      "Name": "小二",
      "Phone": "12345678911"
    }
  }
}
var model = _configuration.GetSection("Demo:Model");

有些小伙伴可能就會問了,那我每個需要用到的地方都需要直接以字符串作為參數(shù)去讀取配置,以后要是突然改了配置項(xiàng),豈不是非常麻煩;

這點(diǎn)小伙伴們大可放心,你可以定義一個實(shí)體類,然后綁定上去,以后有什么更改了,直接重命名對應(yīng)的屬性就行了,實(shí)例代碼

方法一:

var options = new DemoOptions();
_configuration.GetSection("Demo").Bind(options);

方法二:

var options2 = _configuration.GetSection("Demo").Get<DemoOptions>();

方法三:在 Startup.cs、.Net 6 以上在 Program.cs- 中使用依賴注入方式,以下是 .Net 6 

builder.Services.Configure<DemoOptions>(builder.Configuration.GetSection("Demo"));

在需要使用的地方注入  IOptions<TOptions> 即可獲取到配置值,需要注意的是,IOptions 是單例(Singleton)服務(wù),即在應(yīng)用啟動時進(jìn)行注冊,后續(xù)更改配置文件,該 IOptions 將不會同步更新,依然還是舊值 

private readonly DemoOptions _demoOptions;
public ValuesController(IOptions<DemoOptions> options)
{
    _demoOptions = options.Value;
}

如需要配置進(jìn)行熱更新,只需要改成注入 IOptionsMonitor<TOptions> 或者 IOptionsSnapshot<TOptions>;IOptionsSnapshot<TOptions>的生命周期是作用域(Scoped),每次請求都會重新獲取一次配置;IOptionsSnapshot<TOptions> 的生命周期是單例(Singleton),與 IOptions<TOptions> 不一樣的是當(dāng)配置文件發(fā)生改變時,將會自動同步響應(yīng)。

到此這篇關(guān)于.Net Core 配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot的文章就介紹到這了,更多相關(guān).Net Core 文件讀取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • .NET新能源汽車鋰電池檢測程序UI掛死問題分析

    .NET新能源汽車鋰電池檢測程序UI掛死問題分析

    這篇文章主要為大家介紹了.NET新能源汽車鋰電池檢測程序UI掛死問題分析?,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • ASP.NET?Core使用功能開關(guān)控制路由訪問操作

    ASP.NET?Core使用功能開關(guān)控制路由訪問操作

    這篇文章主要介紹了ASP.NET?Core使用功能開關(guān)控制路由訪問操作,而對于一些試驗(yàn)性的功能,我們并不希望用密碼去控制是否允許訪問,而是想用一種開關(guān)的方式開放,下面文章我們就來試著實(shí)現(xiàn)這個功能,需要的小伙伴可以參考一下
    2022-02-02
  • 設(shè)計windows phone頁面主題

    設(shè)計windows phone頁面主題

    這篇文章主要介紹了設(shè)計windows phone頁面主題,需要的朋友可以參考下
    2015-07-07
  • .NET6新特性之 隱式命名空間引用

    .NET6新特性之 隱式命名空間引用

    本文給大家分享的是 .NET6特新 隱式命名空間引用,如果我們要在新加一個命名空間的引用,可以在項(xiàng)目文件中配置增加<Using Include="命名空間"/>,如果需要移除一個命名空間可以這么做<Using Remove="命名空間"/>,下面來看看文章詳細(xì)介紹內(nèi)容吧,需要的朋友可以參考一下
    2021-11-11
  • C#中string與byte[]的轉(zhuǎn)換幫助類-.NET教程,C#語言

    C#中string與byte[]的轉(zhuǎn)換幫助類-.NET教程,C#語言

    在寫c#程序時,string和byte[]之間的轉(zhuǎn)換比較煩,在移植一些老程序時感覺很不好。我在c#中使用des和tripledes時移植一塊老代碼時也遇到了同樣的情況。為了下次不為同樣的事情煩惱,就寫了下面的幫助類。
    2008-03-03
  • .NET 6中使用DateOnly和TimeOnly類型

    .NET 6中使用DateOnly和TimeOnly類型

    這篇文章主要介紹了.NET 6中使用DateOnly和TimeOnly類型,在.NET 6(preview 4)中引入了兩個期待已久的類型,將作為核心庫的一部分。DateOnly和TimeOnly允許開發(fā)人員表示DateTime的日期或時間部分,下文具體內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • ASP.NET Core WebSocket集群實(shí)現(xiàn)思路詳解

    ASP.NET Core WebSocket集群實(shí)現(xiàn)思路詳解

    這篇文章主要為大家介紹了ASP.NET Core WebSocket集群實(shí)現(xiàn)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • asp.net創(chuàng)建事務(wù)的方法

    asp.net創(chuàng)建事務(wù)的方法

    本篇文章主要對asp.net創(chuàng)建事務(wù)的方法進(jìn)行實(shí)例介紹,具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • .Net 6中的PeriodTimer介紹

    .Net 6中的PeriodTimer介紹

    這篇文章主要介紹了.Net 6中的PeriodTimer,.net 6中新增了一個異步計時器PeroidTimer,相對普通Timer的回調(diào), 它的模型更簡單,下面一起來看看具體詳情吧
    2022-01-01
  • ASP.NET Core  依賴注入框架的使用

    ASP.NET Core 依賴注入框架的使用

    還記得上篇文章中最后提及到,假如服務(wù)越來越多怎么處理呢,本篇文章將會帶來解決辦法, ASP.NET Core 依賴注入框架的相關(guān)資料,需要的小伙伴可以參考下面文章的具體內(nèi)容
    2021-10-10

最新評論