<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .Net Core 配置文件讀取 - IOptions、IOptionsMonitor、IOptionsSnapshot

      原文鏈接:http://www.rzrgm.cn/ysmc/p/16637781.html

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

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

      首先,我們在配置文件中,增加 Demo 配置節點:

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

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

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

      通常,我們比較直接的方式是通過 GetSection 獲取對應的配置節點,然后再獲取對應的配置項

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

      如果 Demo 節點內還有更深的節點,GetSection 可以通過 : 深入到對應的下一個節點

      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");

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

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

      方法一:

      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)服務,即在應用啟動時進行注冊,后續更改配置文件,該 IOptions 將不會同步更新,依然還是舊值 

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

      如需要配置進行熱更新,只需要改成注入 IOptionsMonitor<TOptions> 或者 IOptionsSnapshot<TOptions>;

      IOptionsSnapshot<TOptions>的生命周期是作用域(Scoped),每次請求都會重新獲取一次配置;

      IOptionsMonitor<TOptions> 的生命周期是單例(Singleton),與 IOptions<TOptions> 不一樣的是它會監聽配置文件發生的更新,并且自動同步響應。

       

      posted @ 2022-09-02 00:21  一事冇誠  閱讀(3143)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 国产成人高清亚洲综合| 亚洲精中文字幕二区三区| mm1313亚洲国产精品| 亚洲区一区二区激情文学| 久久99亚洲网美利坚合众国| 18禁免费无码无遮挡不卡网站| 亚洲码与欧洲码区别入口| 高清精品视频一区二区三区| 国产gaysexchina男外卖| 久久天天躁狠狠躁夜夜躁| 又大又长粗又爽又黄少妇毛片| 亚洲国产在一区二区三区| 国产成人综合色视频精品| 亚洲国产午夜理论片不卡| 国产一区二区三区在线观| 成人午夜福利一区二区四区| 久久99国产亚洲高清观看首页| 日韩亚洲国产激情一区二区| 欧美成人精品高清在线播放| 日韩少妇人妻vs中文字幕| 国产精品自在自线视频| 国产AV无码专区亚洲AWWW| 日韩一区二区三区日韩精品| 国产精品99久久免费| 在线观看AV永久免费| 雷山县| 国产精品男女爽免费视频| 亚洲乱码日产精品bd在线看| 日韩亚洲欧美中文高清| 日韩少妇人妻vs中文字幕| 国产三级精品三级在线观看| 桃花岛亚洲成在人线AV| 潜江市| 国产精品亚洲二区在线播放| 国产精品成人午夜福利| 久久av无码精品人妻出轨| 国产精品青青在线观看爽香蕉| 肇源县| 亚洲成片在线看一区二区| 91福利一区福利二区| 日本成本人片免费网站|