.NET Web API中如何使用中间件(Middleware)

中间件按注册顺序执行,用于处理请求响应链,如日志、认证、CORS等。在Program.cs中通过app.Use…方法注册,顺序关键,自定义中间件可用委托或类实现,推荐后者以增强可维护性。

.net web api中如何使用中间件(middleware)

在 .NET Web API 中,中间件(Middleware)是处理 HTTP 请求和响应的核心组件。它按照配置的顺序逐个执行,可以用来实现日志记录、身份验证、异常处理、跨域(CORS)等功能。

中间件的作用与执行流程

中间件位于客户端与控制器之间,形成一个请求处理管道。每个中间件可以选择是否将请求传递给下一个组件,也可以在响应返回时进行处理。

典型的执行顺序如下:

请求进入应用 依次经过注册的中间件(如日志、认证、CORS等) 到达最终的路由或控制器 响应按相反顺序回传

如何注册中间件

Program.cs 文件中通过 app.Use... 方法注册中间件。顺序非常重要,因为中间件按注册顺序执行。

示例:添加常用中间件

var builder = WebApplication.CreateBuilder(args);var app = builder.Build();// 启用HTTPS重定向app.UseHttpsRedirection();// 启用跨域资源共享(CORS)app.UseCors(policy => policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());// 启用身份验证(需先配置服务)app.UseAuthentication();app.UseAuthorization();// 使用路由app.UseRouting();app.MapControllers(); // 映射控制器app.Run();

自定义中间件的实现方式

你可以创建自己的中间件来处理特定逻辑,比如记录请求时间、检查请求头等。

有两种常见方式:基于委托和基于类。

方式一:使用委托(简单场景)

app.Use(async (context, next) =>{    Console.WriteLine("请求开始:{0}", context.Request.Path);    await next.Invoke(); // 调用下一个中间件    Console.WriteLine("响应完成:{0}", context.Request.Path);});

方式二:使用类(推荐用于复杂逻辑)

创建一个中间件类:

public class RequestLoggingMiddleware{    private readonly RequestDelegate _next;    public RequestLoggingMiddleware(RequestDelegate next)    {        _next = next;    }    public async Task InvokeAsync(HttpContext context)    {        Console.WriteLine($"收到请求: {context.Request.Method} {context.Request.Path}");        await _next(context);        Console.WriteLine($"响应状态: {context.Response.StatusCode}");    }}

然后扩展方法便于调用:

public static class RequestLoggingExtensions{    public static IApplicationBuilder UseRequestLogging(this IApplicationBuilder builder)    {        return builder.UseMiddleware();    }}

最后在 Program.cs 中使用:

app.UseRequestLogging();

常见中间件使用建议

CORS:确保在路由之前调用 UseCors() 认证与授权:必须在 MapControllers 前使用 UseAuthenticationUseAuthorization 异常处理开发环境可用 UseDeveloperExceptionPage,生产环境建议用 UseExceptionHandler 静态文件:使用 UseStaticFiles() 提供 wwwroot 下的资源基本上就这些。只要理解了中间件的链式执行机制,并掌握注册顺序的影响,就能灵活控制请求流程。

以上就是.NET Web API中如何使用中间件(Middleware)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 17:58:52
下一篇 2025年12月17日 17:59:08

相关推荐

发表回复

登录后才能评论
关注微信