在 ASP.NET Core 开发中,中间件(Middleware) 是处理 HTTP 请求和响应的核心组件。通过合理使用中间件,你可以实现身份验证、日志记录、错误处理等通用功能。本文将手把手教你如何编写和注册自定义中间件,即使你是 C# 编程的新手,也能轻松掌握!
中间件是一段处理 HTTP 请求和响应的代码。多个中间件按顺序组成一个“管道”(Pipeline),每个请求依次通过这些中间件。你可以把中间件想象成工厂流水线上的工作站:每个站完成特定任务,然后把产品传递给下一个站。
常见的内置中间件包括静态文件服务、路由、身份认证等。而我们今天要学习的是如何创建自己的中间件来满足特定业务需求。
在你的 ASP.NET Core 项目中,新建一个文件夹(例如 Middlewares),然后创建一个 C# 类文件,比如 RequestLoggingMiddleware.cs。
using Microsoft.AspNetCore.Http;using System.Threading.Tasks;using System.Diagnostics;namespace YourProject.Middlewares{ public class RequestLoggingMiddleware { private readonly RequestDelegate _next; public RequestLoggingMiddleware(RequestDelegate next) { _next = next; } public async Task InvokeAsync(HttpContext context) { var stopwatch = Stopwatch.StartNew(); await _next(context); // 调用管道中的下一个中间件 stopwatch.Stop(); // 记录请求路径和处理时间 var logMessage = $"[{DateTime.UtcNow}] {context.Request.Method} {context.Request.Path} - {stopwatch.ElapsedMilliseconds}ms"; Console.WriteLine(logMessage); } }} 这个中间件的作用是在控制台输出每个请求的方法、路径和处理耗时。注意几个关键点:
RequestDelegate _next:代表管道中的下一个中间件。InvokeAsync 方法:这是中间件的入口方法,必须是 public 且返回 Task。await _next(context) 表示将请求传递给下一个中间件。仅仅编写中间件还不够,你还需要在 Program.cs(或旧版本的 Startup.cs)中将其注册到请求处理管道中。
在 .NET 6 及以上版本(使用顶层语句)的 Program.cs 中,添加如下代码:
var builder = WebApplication.CreateBuilder(args);var app = builder.Build();// 注册自定义中间件(注意顺序!)app.UseMiddleware<YourProject.Middlewares.RequestLoggingMiddleware>();app.MapGet("/", () => "Hello World!");app.Run(); 中间件的注册顺序非常重要!请求会按照 Use... 的顺序依次进入,再以相反顺序返回。因此,像日志、异常处理这类通用中间件通常放在最前面。
为了让中间件注册更简洁,我们可以创建一个扩展方法:
using Microsoft.AspNetCore.Builder;namespace YourProject.Middlewares{ public static class RequestLoggingMiddlewareExtensions { public static IApplicationBuilder UseRequestLogging( this IApplicationBuilder builder) { return builder.UseMiddleware<RequestLoggingMiddleware>(); } }} 然后在 Program.cs 中就可以这样调用:
app.UseRequestLogging(); // 更清晰、更语义化 通过本教程,你已经学会了如何在 ASP.NET Core 中间件 中编写和注册自定义逻辑。无论是用于日志记录、性能监控还是安全控制,中间件都是 C# Web 开发 中不可或缺的工具。
记住以下要点:
InvokeAsync 或 Invoke 方法。UseMiddleware<T>() 或自定义扩展方法注册。现在,你可以尝试编写自己的中间件了!比如添加 IP 白名单、请求频率限制等功能。祝你在 自定义中间件 的开发之旅中收获满满!
关键词:ASP.NET Core中间件, 中间件注册, C# Web开发, 自定义中间件
本文由主机测评网于2025-12-28发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251213331.html