中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET Core配置選項的執行順序是什么

發布時間:2021-12-06 11:50:38 來源:億速云 閱讀:582 作者:iii 欄目:大數據

這篇文章主要介紹“ASP.NET Core配置選項的執行順序是什么”,在日常操作中,相信很多人在ASP.NET Core配置選項的執行順序是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET Core配置選項的執行順序是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

假設我們同時設置了這三項,那么這三者的執行順序如下:

public class MyOptions
{
        public string Version { get; set; } = "v1";
}

public class MyOptionsSetup : IConfigureOptions<MyOptions>, IPostConfigureOptions<MyOptions>
{
        public void Configure(MyOptions options)
        {
            options.Version = "Configure";
        }

        public void PostConfigure(string name, MyOptions options)
        {
            options.Version = "PostConfigure";
        }
}
// StartUp.css

public class StartUp
{
        public void ConfigureServices(IServiceCollection services)
        {
            // 注冊
            services.TryAddTransient<IConfigureOptions<MyOptions>, MyOptionsSetup>();
            services.TryAddTransient<IPostConfigureOptions<MyOptions>, MyOptionsSetup>();
           
           var options = new MyOptions(); // 默認 options.Version = "v1"
            var serviceProvider = services.BuildServiceProvider();
            
            // 讀取 IConfigureOptions<MyOptions> 實例,并調用 Configure()
            var configureOptions = serviceProvider.GetService<IConfigureOptions<MyOptions>>();
            configureOptions.Configure(options);
			
            // 此時 options.Version = "Configure-v1"
           
           // 不會執行任何操作,僅僅是添加了一個用于配置的委托
            services.Configure( options=> options.Version = "v2" ); 
			
            // 此時 options.Version = "v2"

            // 【注意】如果在 service.Configure() 之后調用 IConfigureOptions.Configure(),
            // 將只會執行 options=> options.Version = "v2",
            // 不會執行 IConfigureOptions.Configure() !!!
            var configureOptions2 = serviceProvider.GetService<IConfigureOptions<MyOptions>>();
            configureOptions2.Configure(options); 
			
            // 此時 options.Version = "v2",而不是 "Configure-v1"
            
            // 讀取 IPostConfigureOptions<MyOptions> 實例,并調用 PostConfigure()
            var postConfigureOptions = serviceProvider.GetService<IPostConfigureOptions<MyOptions>>();
            postConfigureOptions.PostConfigure(options); // 此時 options.Version = "PostConfigure-v1"
        }
}

結論

配置的執行順序:

1. new Options() 默認值

2. IConfigureOptions<Options>.Configure( options )   
【前提是必須在 service.Configure 前調用,需要人為調用】

3. service.Configure()

4. IPostConfigureOptions<Options>( options )   
需要人為調用

總之:
只要調用了 services.Configure , 那么再調用 IConfigureOptions.Configure 就無效了,都是執行 services.Configure 提供的委托或者配置

IPostConfigureOptions.Configure 在前在后,只要調用,都可以被觸發

注意

如果直接獲取 IOptions<MyOptions> ,不會執行 serviceConfigure<TOptions>( setupAction ) 提供的委托 setupAction,會先 new Options(),然后執行 IConfigureConfigure(),最后執行 IPostConfigureOptions.Configure(),且僅在首次獲取IOptions<MyOptions>服務實例的時候觸發。

其他

IOptions<TOptions> 會實時更新它的 Value屬性,即 MyOptions 實例,
IOptionsSnapshot<TOptions> 不會實時更新,因為它只是一個快照

到此,關于“ASP.NET Core配置選項的執行順序是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

徐汇区| 兴仁县| 西乌珠穆沁旗| 新邵县| 保亭| 大竹县| 城市| 教育| 麦盖提县| 巴楚县| 阿拉尔市| 商丘市| 井陉县| 霍城县| 秦皇岛市| 赤城县| 防城港市| 通许县| 甘泉县| 东乡| 河南省| 屏东市| 克什克腾旗| 吉林市| 惠东县| 读书| 米易县| 闻喜县| 雷山县| 灌云县| 乐平市| 长治县| 仁寿县| 锡林郭勒盟| 上虞市| 隆回县| 靖边县| 乌拉特中旗| 岗巴县| 文昌市| 山东|