目錄
什麼是中間件?
如何編寫自定義中間件
步驟如下:
常見應用場景
中間件與過濾器的區別
首頁 後端開發 C#.Net教程 在ASP.NET Core C#中創建自定義中間件

在ASP.NET Core C#中創建自定義中間件

Jul 11, 2025 am 01:55 AM
中介軟體

在ASP.NET Core 中創建自定義中間件,可通過編寫類並註冊實現。 1. 創建包含InvokeAsync 方法的類,處理HttpContext 和RequestDelegate next;2. 在Program.cs 中使用UseMiddleware 註冊。中間件適用於日誌記錄、性能監控、異常處理等通用操作,與MVC 過濾器不同,其作用於整個應用,不依賴控制器。合理使用中間件可提升結構靈活性,但應避免影響性能。

Creating Custom Middleware in ASP.NET Core C#

在ASP.NET Core 中創建自定義中間件,是擴展請求處理流程的一種靈活方式。它允許你在HTTP 請求進入控制器之前或響應返回客戶端之前插入自定義邏輯,比如日誌記錄、身份驗證前檢查、性能監控等。

Creating Custom Middleware in ASP.NET Core C#

什麼是中間件?

中間件是ASP.NET Core 管道中的一環,用來處理每個請求和響應。你可以把它理解為一個“過濾器”,多個中間件按順序串聯起來形成管道。每個中間件可以選擇是否把請求傳遞給下一個節點,或者直接終止流程並返迴響應。

Creating Custom Middleware in ASP.NET Core C#

常見的內置中間件包括UseRouting()UseAuthentication()UseAuthorization() 。而我們需要的是:如何寫一個自己的中間件

如何編寫自定義中間件

創建自定義中間件通常有兩種方式:

Creating Custom Middleware in ASP.NET Core C#
  • 使用委託(Delegating Middleware)
  • 實現中間件類(Class-based Middleware)

推薦使用類的方式,結構更清晰,也便於測試和維護。

步驟如下:

  1. 創建一個類,包含一個InvokeInvokeAsync方法。
  2. 方法接受HttpContext和一個RequestDelegate next參數。
  3. Startup.csProgram.cs中註冊該中間件。

示例代碼如下:

 public class MyCustomMiddleware
{
    private readonly RequestDelegate _next;

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

    public async Task InvokeAsync(HttpContext context)
    {
        // 在這裡添加你的邏輯,例如:
        Console.WriteLine("Before request handled");

        // 繼續執行後續中間件await _next(context);

        Console.WriteLine("After response sent");
    }
}

然後在Program.cs中添加:

 app.UseMiddleware<MyCustomMiddleware>();

注意中間件的註冊順序會影響執行順序,所以要放在合適的位置。

常見應用場景

中間件非常適合用於一些通用的跨請求操作,以下是一些典型場景:

  • 日誌記錄:記錄每次請求的路徑、耗時、IP 地址等信息。
  • 性能監控:統計每個請求的處理時間,用於分析系統瓶頸。
  • 全局異常處理:捕獲未處理異常,統一返回錯誤信息。
  • 請求攔截:根據特定條件拒絕請求(如黑名單IP)。
  • 設置自定義響應頭:比如添加X-Powered-By或其他標識。

比如,你想記錄每個請求的耗時,可以這樣實現:

 public async Task InvokeAsync(HttpContext context)
{
    var stopwatch = new Stopwatch();
    stopwatch.Start();

    await _next(context);

    stopwatch.Stop();
    Console.WriteLine($"Request {context.Request.Path} took {stopwatch.ElapsedMilliseconds} ms");
}

這種做法對調試和性能優化很有幫助。

中間件與過濾器的區別

有時候會混淆中間件和MVC 過濾器。它們都能做類似的事情,但適用範圍不同:

  • 中間件作用於整個應用程序,適用於所有請求,不依賴於MVC 框架。
  • 過濾器只對MVC 控制器生效,適合做一些Action 層面的操作,比如參數校驗、結果格式化。

如果你希望對非控制器請求(比如靜態文件)也進行處理,那就必須用中間件。

另外,中間件可以控制整個請求管道的走向,甚至可以在控制器執行前就結束響應。


基本上就這些。寫一個中間件並不復雜,但要注意不要過度使用,避免影響性能。合理利用中間件,能讓你的應用結構更清晰、功能更靈活。

以上是在ASP.NET Core C#中創建自定義中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

Rimworld Odyssey溫度指南和Gravtech
1 個月前 By Jack chen
初學者的Rimworld指南:奧德賽
1 個月前 By Jack chen
PHP變量範圍解釋了
4 週前 By 百草
撰寫PHP評論的提示
3 週前 By 百草
在PHP中評論代碼
3 週前 By 百草

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1604
29
PHP教程
1509
276
如何在Laravel中使用中間件進行資料恢復 如何在Laravel中使用中間件進行資料恢復 Nov 02, 2023 pm 02:12 PM

Laravel是一個流行的PHPWeb應用程式框架,提供了許多快速且簡單的方式來建立高效、安全且可擴展的Web應用程式。在開發Laravel應用程式時,我們經常需要考慮資料恢復的問題,即如何在資料遺失或損壞的情況下恢復資料並保證應用程式的正常運作。在本文中,我們將介紹如何使用Laravel中間件來實現資料復原功能,並提供具體的程式碼範例。一、什麼是Lara

如何在Laravel中使用中間件處理表單驗證 如何在Laravel中使用中間件處理表單驗證 Nov 02, 2023 pm 03:57 PM

如何在Laravel中使用中間件處理表單驗證,需要具體程式碼範例引言:在Laravel中,表單驗證是非常常見的任務。為了確保使用者輸入的資料的有效性和安全性,我們通常會對表單提交的資料進行驗證。 Laravel提供了一個方便的表單驗證功能,同時也支援使用中間件來處理表單驗證。本文將詳細介紹如何在Laravel中使用中間件處理表單驗證,並提供具體的程式碼範例

tomcat中間件原理是什麼 tomcat中間件原理是什麼 Dec 27, 2023 pm 04:40 PM

tomcat中間件原理是基於Java Servlet和Java EE規格來實現的。 Tomcat作為Servlet容器,負責處理HTTP請求和回應,提供Web應用程式的運作環境。 Tomcat中間件的原理主要涉及:1、容器模型;2、元件化架構;3、Servlet處理機制;4、事件監聽和過濾器;5、組態管理;6、安全性;7、叢集和負載平衡; 8、連接器技術;9、嵌入式模式等等。

如何在Laravel中使用中間件進行回應轉換 如何在Laravel中使用中間件進行回應轉換 Nov 03, 2023 am 09:57 AM

如何在Laravel中使用中間件進行回應轉換中間件是Laravel框架中非常強大且實用的功能之一。它允許我們在請求進入控制器之前或回應被發送給客戶端之前,對請求和回應進行處理。在本文中,我將示範如何使用中間件在Laravel中進行回應轉換。在開始之前,確保你已經安裝了Laravel並創建了一個新的專案。現在,我們將按照以下步驟進行操作:建立一個新的中間件打開

如何在Laravel中使用中間件進行資料加速 如何在Laravel中使用中間件進行資料加速 Nov 02, 2023 am 09:40 AM

如何在Laravel中使用中間件進行資料加速引言:在使用Laravel框架開發Web應用程式時,資料加速是提高應用程式效能的關鍵。中間件是Laravel提供的重要功能,可以在請求到達控制器之前或回應返回之前對請求進行處理。本文將重點放在如何在Laravel中使用中間件實現資料加速,並提供具體的程式碼範例。一、什麼是中間件中間件是Laravel框架中一種機制,用

在Slim框架中使用中間件(Middleware)設定跨域資源共享(CORS)的方法 在Slim框架中使用中間件(Middleware)設定跨域資源共享(CORS)的方法 Jul 30, 2023 pm 08:34 PM

在Slim框架中使用中間件(Middleware)設定跨域資源共享(CORS)的方法跨域資源共享(CORS)是一種機制,允許伺服器在HTTP響應頭中設定一些額外的信息,來告知瀏覽器是否允許跨域請求。在一些前後端分離的專案中,使用CORS機制可以實現前端跨域請求後端介面的需求。在使用Slim框架開發RESTAPI時,我們可以使用中間件(Middleware)

如何在Laravel中使用中間件進行微信支付集成 如何在Laravel中使用中間件進行微信支付集成 Nov 02, 2023 pm 05:21 PM

如何在Laravel中使用中介軟體進行微信支付整合引言:微信支付是一種非常常見且便捷的支付方式,對於許多需要線上支付服務的專案來說,整合微信支付是必不可少的一步。在Laravel框架中,可以透過使用中間件來實現微信支付集成,以便更好地管理請求流程和處理支付邏輯。本文將介紹如何在Laravel中使用中間件進行微信支付集成,並提供具體的程式碼範例。一、準備工作在開始

如何在Laravel中使用中間件進行定時任務調度 如何在Laravel中使用中間件進行定時任務調度 Nov 02, 2023 pm 02:26 PM

如何在Laravel中使用中間件進行定時任務調度引言:Laravel是一款流行的PHP開源框架,提供了便捷且強大的工具來開發Web應用程式。其中一個重要的特性是定時任務調度,它可以讓開發者在指定的時間間隔內執行特定的任務。在本文中,我們將介紹如何使用中間件來實現Laravel的定時任務調度,並提供具體的程式碼範例。環境準備在開始之前,我們需要確保

See all articles