成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET Core中創建中間件的幾種方式

開發 前端
在ASP.NET Core中添加和創建中間件的方式有很多種,本文列舉了四種常見的方式,具體取決于你的需求和偏好。每種方式都有其適用的場景,選擇合適的方法可以使你的代碼更加簡潔和易于維護。

前言

今天我們一起來盤點一下在ASP.NET Core應用程序中添加和創建中間件常見的四種方式。

中間件介紹

ASP.NET Core中間件(Middleware)是用于處理HTTP請求和響應的組件,它們被安排在請求處理管道中,并按順序執行。中間件的設計是為了使其在請求處理管道中能夠以靈活和可擴展的方式處理 HTTP 請求和響應。

下圖顯示了 ASP.NET Core MVC 和 Razor Pages 應用的完整請求處理管道:

了解現有中間件的順序,以及在哪里添加自定義中間件。你可以完全控制如何重新排列現有中間件,或根據場景需要注入新的自定義中間件。

圖片圖片

中間件用途

開發者通過在請求處理管道中添加不同的中間件(Middleware)組件,可以實現應用程序的認證和授權、日志記錄、異常處理、靜態文件處理、路由和端點映射、CORS(跨域資源共享)、會話管理、請求壓縮、國際化和本地化、緩存等各種功能。

通過請求委托添加中間件

我們可以通過在 WebApplication 實例上調用 Use 方法,并提供一個帶有兩個參數的 lambda 方法來實現。第一個參數是 HttpContext,第二個參數是管道中的實際下一個請求委托。

var builder = WebApplication.CreateBuilder(args);
            var app = builder.Build();

            app.Use(async (context, next) =>
            {
                // 在這里處理請求
                // ...

                await next.Invoke();

                // 在這里處理響應
                // ...
            });

            app.Run();

按約定添加中間件

ASP.NET Core中提供了許多內置中間件,例如靜態文件中間件、路由、認證、授權中間件等。這些中間件通常已經預先定義好了,開發者只需按照約定調用相應的方法即可。

var builder = WebApplication.CreateBuilder(args);
            var app = builder.Build();

            // 使用靜態文件中間件
            app.UseStaticFiles();

            // 使用路由中間件
            app.UseRouting();

            // 使用認證中間件
            app.UseAuthentication();

            // 使用授權中間件
            app.UseAuthorization();

            app.Run();

創建自定義中間件類

創建自定義中間件類

首先我們創建一個自定義中間件類 RequestLoggingMiddleware,它將記錄每個請求的詳細信息。

public class RequestLoggingMiddleware
    {
        private readonly RequestDelegate _next;

        public RequestLoggingMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task InvokeAsync(HttpContext context)
        {
            // 記錄請求信息
            Console.WriteLine($"Request Method: {context.Request.Method}");
            Console.WriteLine($"Request Path: {context.Request.Path}");

            // 調用下一個中間件
            await _next(context);

            // 記錄響應狀態碼
            Console.WriteLine($"Response Status Code: {context.Response.StatusCode}");
        }
    }

創建擴展方法

為了方便在應用程序中注冊中間件,我們可以創建一個擴展方法。

public static class RequestLoggingMiddlewareExtensions
    {
        public static IApplicationBuilder UseRequestLogging(this IApplicationBuilder builder)
        {
            return builder.UseMiddleware<RequestLoggingMiddleware>();
        }
    }

在應用程序中使用自定義中間件

在 Program.cs 文件中,使用自定義中間件。

var builder = WebApplication.CreateBuilder(args);
            var app = builder.Build();

            // 使用自定義中間件
            app.UseRequestLogging();

            app.Run();

添加基于工廠的中間件

IMiddlewareFactory 是 ASP.NET Core 中用于創建和管理中間件實例的接口。它提供了一種靈活的方式來控制中間件的創建和生命周期管理,特別是在需要復雜依賴注入或條件實例化的場景中。

創建自定義中間件工廠

實現 IMiddlewareFactory 接口的自定義工廠類。

public class CustomMiddlewareFactory(IServiceProvider serviceProvider) : IMiddlewareFactory
    {
        private readonly IServiceProvider _serviceProvider = serviceProvider;

        public IMiddleware? Create(Type middlewareType)
        {
            // 使用服務提供者創建中間件實例
            return _serviceProvider.GetService(middlewareType) as IMiddleware;
        }

        public void Release(IMiddleware middleware)
        {
            // 如果需要,可以在這里釋放中間件實例(容器負責釋放資源)
            (middleware as IDisposable)?.Dispose();
        }
    }

創建自定義中間件

實現 IMiddleware 接口的自定義中間件類。

public class CustomMiddleware : IMiddleware
    {
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            Console.WriteLine("在這里處理請求.......");

            await next(context);

            Console.WriteLine("在這里處理響應.......");
        }
    }

注冊中間件和工廠

在 Program.cs 文件中注冊自定義中間件和工廠。

var builder = WebApplication.CreateBuilder(args);

            // 注冊中間件和工廠到依賴注入容器
            builder.Services.AddTransient<CustomMiddleware>();
            builder.Services.AddTransient<IMiddlewareFactory, CustomMiddlewareFactory>();

            var app = builder.Build();

            // 使用基于工廠的中間件
            app.UseMiddleware<CustomMiddleware>();
            app.Run();

最后總結

在ASP.NET Core中添加和創建中間件的方式有很多種,本文列舉了四種常見的方式,具體取決于你的需求和偏好。每種方式都有其適用的場景,選擇合適的方法可以使你的代碼更加簡潔和易于維護。

參考文章

  • https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-8.0
  • https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/extensibility?view=aspnetcore-8.0
責任編輯:武曉燕 來源: 追逐時光者
相關推薦

2025-03-26 07:53:24

2019-08-12 08:00:00

ASP.NetASP.Net Cor編程語言

2023-10-18 07:32:27

中間件技術HTTP請求

2021-01-26 14:57:00

中間件應用模塊化

2024-06-12 13:02:47

2009-07-28 09:45:34

Webpart部署方式使用ASP.NET

2021-02-19 06:54:33

配置系統ASP.NET Cor

2024-05-13 09:32:06

攔截器HTTP中間件

2012-06-04 09:36:50

2009-07-30 12:19:32

ASP.NET中使用A

2009-07-22 17:45:11

ASP.NET插件

2018-08-20 08:03:46

跨平臺 Web操作系統

2024-09-09 07:37:51

AspJWT權限

2024-06-11 09:00:00

異步編程代碼

2009-04-17 17:11:18

ASP.NET新浪天氣

2024-12-05 08:14:41

2025-01-15 00:01:00

開發應用界面

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2009-07-29 13:57:53

創建SlideShowASP.NET

2021-03-04 11:10:29

容器化Docker虛擬機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕视频在线 | 欧美日韩精品一区二区三区四区 | 涩爱av一区二区三区 | 男人天堂网站 | 欧美老妇交乱视频 | 欧产日产国产精品v | 亚洲成人综合网站 | 成人黄在线观看 | 午夜精品久久久久久久星辰影院 | www.国产| 国产欧美日韩在线 | 亚洲精品一区二区二区 | 国产欧美在线一区二区 | 欧美一区二区网站 | 中文字幕成人免费视频 | 日韩精品久久一区二区三区 | 中文字幕av亚洲精品一部二部 | 国产免费拔擦拔擦8x高清 | 岛国视频| www.日韩系列 | 成人在线精品视频 | 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲中午字幕 | 日日操视频 | 亚洲精视频 | 日韩成人一区二区 | 视频一区在线观看 | 在线超碰 | 在线一区二区三区 | 日韩中文字幕在线 | 国产重口老太伦 | 一区二区三区中文字幕 | 一区二区av在线 | 九色视频网站 | 在线观看亚洲 | 91在线视频播放 | 日韩精品免费在线 | 丝袜美腿av| 久久国产欧美日韩精品 | 免费观看一级特黄欧美大片 | 久久一区二区三区四区 |