日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何在 ASP.NET Core 中 使用 功能开关

發布時間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 ASP.NET Core 中 使用 功能开关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.NET Core 中的 功能管理 (Feature Management) 包可用于實現 功能開關,什么意思呢?就是可以通過 功能開關 特性動態的改變應用程序的行為而不需要改變任何的業務邏輯代碼,聽起來是不是挺有意思,本篇我們就來討論如何使用這個包。

安裝 Feature Management 包

要想使用 功能管理,需要通過 NuGet 安裝 Microsoft.FeatureManagement.AspNetCore,可通過 Visual Studio 2019 下的 NuGet Package Manager 可視化管理界面 或者 通過 .NET CLI 命令行工具輸入如下命令。

dotnet?add?package?Microsoft.FeatureManagement.AspNetCore

在 ASP.NET Core 中添加

為了能夠在項目中用上 功能管理,需要在 Startup.ConfigureServices 方法下進行 service 注入,如下代碼所示:

public?class?Startup{//?This?method?gets?called?by?the?runtime.?Use?this?method?to?add?services?to?the?container.public?void?ConfigureServices(IServiceCollection?services){services.AddControllersWithViews();services.AddFeatureManagement();}}

有一點要注意:功能管理 中的 功能開關 讀取的值來自于 .NET Core 中的配置文件,如果你想讓 功能開關 的值來源于 Configuration 文件的不同節點,必須在 service 注冊時單獨指定一下,如下代碼所示:

public?void?ConfigureServices(IServiceCollection?services){services.AddFeatureManagement(options?=>{options.UseConfiguration(Configuration.GetSection("IDGFeatureFlags"));});}

在 controller 中使用 功能管理

為了能夠在 Controller 中用上 功能管理(feature management),需要通過依賴注入的方式將其注入到 Controller 中,如下代碼所示:

public?class?HomeController?:?Controller {private?readonly?ILogger<HomeController>?_logger;private?readonly?IFeatureManager?_featureManager;public?HomeController(ILogger<HomeController>?logger,?IFeatureManagerSnapshot?featureManager){_logger?=?logger;_featureManager?=?featureManager;} }

接下來在 appsettings.json 配置文件中定義一個名為 FeatureManagement 節點,文件內容參考如下:

{"Logging":?{"LogLevel":?{"Default":?"Information","Microsoft":?"Warning","Microsoft.Hosting.Lifetime":?"Information"}},"FeatureManagement":?{"DbLogger":?"true"},"AllowedHosts":?"*" }

使用 FeatureGate特性 管控 功能開關

可以使用 FeatureGate 特性來 管控 Action 方法是否可以被執行,什么意思呢?先看如下代碼。

public?class?HomeController?:?Controller{private?readonly?ILogger<HomeController>?_logger;private?readonly?IFeatureManager?_featureManager;public?HomeController(ILogger<HomeController>?logger,?IFeatureManagerSnapshot?featureManager){_logger?=?logger;_featureManager?=?featureManager;}[FeatureGate("DbLogger")]public?IActionResult?Index(){return?View();}}

可以看到, Index 方法標注了 [FeatureGate("DbLogger")] 特性,這里面的 DbLogger 就是 appsettings.json 中的 DbLogger 節點的值,當值為 True 時,這個 Index 方法是可以被 HttpGet 所請求的,如下圖:

當值為 False 時,這個 Index 方法將會拋出 404 錯誤,是不是很有意思哈,如下圖所示:

{"Logging":?{"LogLevel":?{"Default":?"Information","Microsoft":?"Warning","Microsoft.Hosting.Lifetime":?"Information"}},"FeatureManagement":?{"DbLogger":?"false"},"AllowedHosts":?"*" }

用法就是這么一個用法,可以看到 .NET Core 對 功能管理 提供了開箱即用的支持, 這確實是一個非常實用的特性,更多關于該 知識點 的介紹,可參考官網:https://docs.microsoft.com/en-us/azure/azure-app-configuration/use-feature-flags-dotnet-core

譯文鏈接:https://www.infoworld.com/article/3481516/how-to-use-feature-flags-in-aspnet-core.html

總結

以上是生活随笔為你收集整理的如何在 ASP.NET Core 中 使用 功能开关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。