1. 程式人生 > >ASP.NET Core 開發:中介軟體

ASP.NET Core 開發:中介軟體

ASP.NET Core開發,開發並使用中介軟體(Middleware)。中介軟體是被組裝成一個應用程式管道來處理請求和響應的軟體元件。每個元件選擇是否傳遞給管道中的下一個元件的請求,並能之前和下一組分在管道中呼叫之後執行特定操作。

具體如圖:

開發中間件(Middleware)

今天我們來實現一個記錄ip 的中介軟體。

1.新建一個asp.net core專案,選擇空的模板。

然後為專案新增一個 Microsoft.Extensions.Logging.Console

NuGet 命令列 ,請使用官方源。

Install-Package Microsoft.Extensions.Logging.Console -Pre

2.新建一個類: RequestIPMiddleware.cs

C#
1234567891011121314151617 publicclassRequestIPMiddleware{privatereadonlyRequestDelegate _next;privatereadonlyILogger _logger;publicRequestIPMiddleware(RequestDelegate next,ILoggerFactory loggerFactory){_next=next;_logger=loggerFactory.CreateLogger();}public
asyncTask Invoke(HttpContext context){_logger.LogInformation("User IP: "+context.Connection.RemoteIpAddress.ToString());await_next.Invoke(context);}}

3.再新建一個:RequestIPExtensions.cs

C#
1234567 publicstaticclassRequestIPExtensions{publicstaticIApplicationBuilder UseRequestIP(thisIApplicationBuilder builder){returnbuilder.UseMiddleware();}}

這樣我們就編寫好了一箇中間件。

使用中介軟體(Middleware)

1.使用

在 Startup.cs 新增 app.UseRequestIP()

C#
123456789 publicvoidConfigure(IApplicationBuilder app,ILoggerFactory loggerfactory){loggerfactory.AddConsole(minLevel:LogLevel.Information);app.UseRequestIP();//使用中介軟體app.Run(async(context)=>{awaitcontext.Response.WriteAsync("Hello World!");});}

然後執行程式,我選擇使用Kestrel 。

訪問:http://localhost:5000/

成功執行。

這裡我們還可以對這個中介軟體進行進一步改進,增加更多的功能,如限制訪問等。