|
在這篇文章中,我將通過一個示例,來講解ASP.NET Core中的請求處理管道。在這篇文章中,我們將討論下面幾個點:
理解ASP.NET Core請求處理管道為了理解ASP.NET Core中的請求處理管道,我們來修改一下Configure方法。這里我們向請求管道中注冊了三個中間件組件。正如你所見,前面兩個中間件是使用Use擴展方法注冊的,最后一個是使用Run擴展方法注冊的。 代碼解釋: 首先我們向Configure方法注入了日志中間件,也就是ILogger<Startup>. Program類中的Main方法調(diào)用 CreateDefaultBuilder方法,來配置日志。
在上面圖片中,你可以發(fā)現(xiàn),日志提供了Console、Debug、以及EventSource.在這篇例子中,我使用的日志實例來記錄日志。 如果你是通過.NET Core CLI來運行程序的話,那么你可以在命令行窗口可以看到日志信息,如果你是通過Visual Studio來運行程序的話,你可以在輸出窗口看到日志信息。 現(xiàn)在運行程序就會發(fā)現(xiàn):
你會看到輸出的順序: Middleware1: Incoming Request 理解ASP.NET Core請求處理管道的執(zhí)行順序為了理解這個,我們看下,下面的這個圖:
當(dāng)HTTP請求來臨的時候,首先被中間件1發(fā)現(xiàn),然后記錄日志信息。一旦中間件1記錄了日志信息,就會調(diào)用next方法,然后就調(diào)用中間件2.同樣中間件2,調(diào)用next方法,調(diào)用中間件3.因為中間件3是使用Run擴展方法注冊的。所以是個終結(jié)中間件。這個時候就會回傳,也就會打印Middleware2: Outgoing Response,以及Middleware1: Outgoing Response。 需要特別注意的是: ASP.NET Core請求處理管道,是由一系列有序的中間件組件組成的,他們是一個接一個被調(diào)用的。每一個中間件組件可以在調(diào)用下一個中間件之前或者之后,執(zhí)行一些操作。當(dāng)一個中間件,不去調(diào)用下一個中間件,這被稱為請求管道短路。中間件可以獲取請求也可以處理響應(yīng)。 你需要記住的是:中間件是按照你添加的順序執(zhí)行的,然后響應(yīng)剛好是相反的順序。 下篇文章中,我們將學(xué)習(xí),ASP.NET Core中使用靜態(tài)中間件,處理靜態(tài)文件。這篇文章,我向大家解釋了,ASP.NET Core請求處理管道,希望能幫到大家。 |
|
|