CORE过滤器

博客提到list文件实现了链表,并给出重构建议,若后续自行重构,可使用stl::list。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

list文件,实现了链表,如果以后自己重构的话,可以用stl::list

在 ASP.NET Core 中,过滤器和中间件是两种用于处理请求和响应的机制,但它们的作用范围和使用场景有所不同。 ### 过滤器(Filters) 过滤器主要用于 MVC 或 Razor Pages 应用程序中,在特定的动作或控制器执行前后添加逻辑。它们可以用来实现日志记录、授权、异常处理等功能。 #### 过滤器的类型 1. **Authorization Filters**:在模型绑定之前执行,用于检查用户是否有权访问某个资源。 2. **Resource Filters**:在模型绑定之后和操作执行之前执行,适用于需要访问请求或响应的场景。 3. **Action Filters**:在动作方法执行前后执行,可以用来修改输入或输出。 4. **Exception Filters**:捕获整个应用程序中的未处理异常。 5. **Result Filters**:在操作结果执行前后执行,可以用来修改视图或数据。 #### 示例代码 - 创建一个简单的 Action Filter ```csharp public class SampleActionFilter : IActionFilter { public void OnActionExecuting(ActionExecutingContext context) { // 在动作执行前执行的逻辑 Console.WriteLine("Action is about to execute..."); } public void OnActionExecuted(ActionExecutedContext context) { // 在动作执行后执行的逻辑 Console.WriteLine("Action has executed."); } } ``` 要将这个过滤器应用到控制器或动作上,可以使用特性: ```csharp [TypeFilter(typeof(SampleActionFilter))] public IActionResult Index() { return View(); } ``` ### 中间件(Middleware) 中间件是一系列组件,它们按顺序处理请求和响应。每个中间件组件可以选择是否将请求传递给下一个组件,并可以在传递前后执行自定义逻辑。中间件非常适合处理跨切面关注点,如身份验证、错误处理、静态文件服务等。 #### 示例代码 - 创建一个简单的中间件 ```csharp public class SimpleMiddleware { private readonly RequestDelegate _next; public SimpleMiddleware(RequestDelegate next) { _next = next; } public async Task InvokeAsync(HttpContext httpContext) { // 在请求处理前执行的逻辑 Console.WriteLine("Before request processing..."); if (_next != null) { await _next(httpContext); // 调用下一个中间件 } // 在请求处理后执行的逻辑 Console.WriteLine("After request processing..."); } } ``` 要将中间件添加到管道中,需要在 `Startup.cs` 的 `Configure` 方法中注册它: ```csharp public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseMiddleware<SimpleMiddleware>(); app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); } ``` ### 解释 - **过滤器** 是专门为 MVC 和 Razor Pages 设计的,通常用于与具体的动作或控制器相关的逻辑。 - **中间件** 则更加通用,适合处理所有请求的全局逻辑。 #### 区别总结 | 特性 | 过滤器 | 中间件 | |-------------------|----------------------------------|----------------------------------| | 适用范围 | MVC/Razor Pages | 所有请求 | | 注册方式 | 使用特性或全局配置 | 在 `Startup.Configure` 方法中注册 | | 生命周期控制 | 动作级别的生命周期控制 | 请求级别的生命周期控制 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值