ASP.NET?Core使用功能開(kāi)關(guān)控制路由訪問(wèn)操作
前言:
在前面的文章,我們介紹了使用Middleware有條件地允許訪問(wèn)路由(《ASP.NET Core使用Middleware設(shè)置有條件允許訪問(wèn)路由》)。
而對(duì)于一些試驗(yàn)性的功能,我們并不希望用密碼去控制是否允許訪問(wèn),而是想用一種開(kāi)關(guān)的方式開(kāi)放。
1.功能開(kāi)關(guān)
功能開(kāi)關(guān)(Feature flags)就是這樣一種部署技術(shù),有助于提高應(yīng)用程序的靈活性。
使用功能開(kāi)關(guān),你可以將新功能部署到生產(chǎn)環(huán)境中,但限制其可用性。
通過(guò)使用開(kāi)關(guān),你可以為控制是否激活一項(xiàng)新功能,而無(wú)需重新啟動(dòng)應(yīng)用程序或部署新代碼。
它們將新功能的發(fā)布與代碼部署分離。
3.實(shí)現(xiàn)
首先,我們需要引用nuget包Microsoft.FeatureManagement.AspNetCore。
然后,修改Startup.cs代碼:
public void ConfigureServices(IServiceCollection services)
{
? ? ...
? ? services.AddFeatureManagement();
? ? ...
}接著,增加一個(gè)配置:
"FeatureManagement":?
? ? {
? ? ? ? "ForbiddenDebugEndpoint": false
? ? }3.使用
修改我們上次實(shí)現(xiàn)的DebugMiddleware:
public class DebugMiddleware : IMiddleware
{
? ? private readonly IFeatureManager _featureManager;
? ? public DebugMiddleware(IFeatureManager featureManager)
? ? {
? ? ? ? _featureManager = featureManager;
? ? }
? ? public async Task InvokeAsync(HttpContext context, RequestDelegate next)
? ? {
? ? ? ? var isDebugEndpoint = context.Request.Path.Value.Contains("/test");
? ? ? ? var debugEndpoint = await _featureManager.IsEnabledAsync("ForbiddenDebugEndpoint");
? ? ? ? if (isDebugEndpoint && debugEndpoint)
? ? ? ? {
? ? ? ? ? ? context.SetEndpoint(new Endpoint((context) =>
? ? ? ? ? ? {
? ? ? ? ? ? ? ? context.Response.StatusCode = StatusCodes.Status403Forbidden;
? ? ? ? ? ? ? ? return Task.CompletedTask;
? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? EndpointMetadataCollection.Empty,
? ? ? ? ? ? ? ? ? ? ? ? "無(wú)權(quán)訪問(wèn)"));
? ? ? ? }
? ? ? ? await next(context);
? ? ? ? ? ??
? ? }
}關(guān)鍵就是這句話,我們使用了功能開(kāi)關(guān):
var debugEndpoint = await _featureManager.IsEnabledAsync("ForbiddenDebugEndpoint");
結(jié)論:
運(yùn)行后我們發(fā)現(xiàn),只需修改配置,無(wú)需重啟程序,我們就可以控制是否可以訪問(wèn)路由了:

到此這篇關(guān)于ASP.NET Core使用功能開(kāi)關(guān)控制路由訪問(wèn)操作的文章就介紹到這了,更多相關(guān)ASP.NET Core使用功能開(kāi)關(guān)控制路由訪問(wèn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解ASP.NET WEB API 之屬性路由
- ASP.NET?Core?MVC路由(Routing)的用法
- ASP.NET Core中的Razor頁(yè)面實(shí)現(xiàn)路由功能
- ASP.NET?Core使用功能開(kāi)關(guān)控制路由訪問(wèn)操作(續(xù))
- Asp.net Core 如何設(shè)置黑白名單(路由限制)
- 詳解ASP.NET Core端點(diǎn)路由的作用原理
- ASP.NET Core中自定義路由約束的實(shí)現(xiàn)
- asp.net core webapi項(xiàng)目配置全局路由的方法示例
- asp.net core 屬性路由和約定路由的實(shí)現(xiàn)
相關(guān)文章
asp.net 獲取數(shù)據(jù)庫(kù)連接字符串
本文主要介紹了asp.net獲取數(shù)據(jù)庫(kù)連接字符串的具體實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以看下2016-12-12
水晶易表調(diào)用C#的WebService,返回?cái)?shù)據(jù)集合的應(yīng)用分析
本篇文章介紹了,水晶易表調(diào)用C#的WebService,返回?cái)?shù)據(jù)集合的應(yīng)用分析。需要的朋友參考下2013-04-04
.NET新能源汽車鋰電池檢測(cè)程序UI掛死問(wèn)題分析
這篇文章主要為大家介紹了.NET新能源汽車鋰電池檢測(cè)程序UI掛死問(wèn)題分析?,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
ASP.NET webUploader上傳大視頻文件相關(guān)web.config配置
本文主要介紹了webUploader上傳大視頻文件相關(guān)web.config的配置。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
ASP.NET Core如何注入多個(gè)服務(wù)實(shí)現(xiàn)類
這篇文章主要介紹了ASP.NET Core如何注入多個(gè)服務(wù)實(shí)現(xiàn)類的相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容2021-09-09
.NET?Core?中對(duì)象池?Object?Pool的使用
這篇文章主要介紹了?.NET?Core?中對(duì)象池?Object?Pool的使用,對(duì)象池簡(jiǎn)單來(lái)說(shuō)就是一種為對(duì)象提供可復(fù)用能力的軟件設(shè)計(jì)思路,對(duì)象池最常用的場(chǎng)景是游戲設(shè)計(jì),因?yàn)樵谟螒蛑写罅看嬖谥蓮?fù)用的對(duì)象,源源不斷的子彈出現(xiàn)并不是循環(huán)再生的,下面一起進(jìn)入文章了解具體內(nèi)容吧2021-11-11

