.NET Web API中如何使用中间件(Middleware)_中间件使用配置指南

中间件是.NET Web API中处理HTTP请求的核心组件,按注册顺序在管道中执行,用于实现日志、认证、授权、CORS等功能。通过UseRouting、UseAuthentication、UseAuthorization等内置中间件及自定义中间件(如请求耗时记录),可构建安全高效的请求处理流程,其中执行顺序至关重要,例如UseRouting必须位于UseAuthorization之前,异常处理中间件应置于开头以捕获全局异常。

.net web api中如何使用中间件(middleware)_中间件使用配置指南

在 .NET Web API 中,中间件(Middleware)是处理 HTTP 请求和响应的核心机制。它位于客户端与控制器之间,按顺序执行,可用于日志记录、身份验证、异常处理、CORS 配置等通用任务。合理使用中间件能提升应用的可维护性和安全性。

中间件的基本概念

中间件是一段代码,用来在请求管道中处理每个进入的 HTTP 请求或响应。它们按注册顺序依次执行,形成一个“管道”。每个中间件可以选择是否将请求传递给下一个组件。

常见内置中间件包括:

UseRouting():匹配路由UseAuthentication():启用身份验证UseAuthorization():执行授权策略UseCors():启用跨域资源共享UseExceptionHandler():捕获未处理异常

自定义中间件的创建与使用

你可以编写自己的中间件来实现特定逻辑,比如请求日志、性能监控或请求头检查。

步骤如下:

创建一个类,包含 Invoke 或 InvokeAsync 方法注入所需服务(如 ILogger)在 Program.cs 中注册该中间件

示例:记录请求耗时的中间件

public class RequestTimeLoggerMiddleware{    private readonly RequestDelegate _next;    private readonly ILogger _logger;
public RequestTimeLoggerMiddleware(RequestDelegate next, ILogger logger){    _next = next;    _logger = logger;}public async Task InvokeAsync(HttpContext context){    var startTime = DateTime.Now;    await _next(context);    var duration = DateTime.Now - startTime;    _logger.LogInformation($"请求 {context.Request.Path} 耗时: {duration.TotalMilliseconds}ms");}

}

扩展方法封装(推荐做法):

public static class RequestTimeLoggerExtensions{    public static IApplicationBuilder UseRequestTimeLogger(this IApplicationBuilder app)    {        return app.UseMiddleware();    }}

在 Program.cs 中配置中间件管道

.NET 6 及以上版本使用 Minimal API 模式,在 Program.cs 中直接配置中间件顺序。

注意:顺序至关重要,例如 UseRouting() 必须在 UseAuthorization() 之前。

示例配置:

var builder = WebApplication.CreateBuilder(args);var app = builder.Build();

app.UseExceptionHandler("/error"); // 异常处理app.UseCors(policy => policy.AllowAnyOrigin().AllowAnyMethod()); // CORSapp.UseAuthentication(); // 认证app.UseAuthorization(); // 授权app.UseRouting(); // 路由解析

// 使用自定义中间件app.UseRequestTimeLogger();

app.MapControllers(); // 映射控制器

app.Run();

如果中间件只针对特定路径,可以使用 Map 或 UseWhen:

app.Map("/api", apiApp =>{    apiApp.UseRequestTimeLogger();    apiApp.MapControllers();});

中间件执行顺序的关键原则

中间件的注册顺序决定其执行顺序。以下是一些关键规则:

异常处理中间件应放在最前面,确保能捕获后续中间件抛出的异常UseRouting() 必须在 UseAuthorization() 和 UseAuthentication() 之前静态文件中间件(UseStaticFiles)通常放在靠前位置,避免不必要的处理MapControllers() 应放在最后,作为终结点

错误示例(顺序错误):

app.UseAuthorization();app.UseRouting(); // 错误:应在 UseAuthorization 前调用 UseRouting

正确顺序:

app.UseRouting();app.UseAuthentication();app.UseAuthorization();

基本上就这些。只要理解中间件的执行流程和顺序依赖,就能灵活构建高效、安全的 Web API 请求处理管道。

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

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

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

相关推荐

发表回复

登录后才能评论
关注微信