.Net Core 筛选器Filters介绍

227 次浏览次阅读

1.筛选器介绍

筛选器的用途和中间件功能很相似,都可以对请求前后执行自定义逻辑。中间件的作用范围是整个请求管道,筛选器的作用范围更加灵活,可以作用于控制器、操作方法、全局范围或特定范围。可以创建自定义筛选器,用于处理横切关注点。 横切关注点的示例包括错误处理、缓存、配置、授权和日志记录。 筛选器可以避免复制代码。 例如,错误处理异常筛选器可以合并错误处理。

2.筛选器作用原理

.Net Core 筛选器Filters介绍

如图所示,筛选器管道在 ASP.NET Core 选择了要执行的操作之后运行,筛选器作用于方法执行前后

.Net Core 筛选器Filters介绍
筛选器类型在筛选器管道中的交互方式

3.筛选器的用途

  • 在终结点处理程序前后运行代码。
  • 检查和修改终结点处理程序调用期间提供的参数。
  • 截获终结点处理程序的响应行为。

4.筛选器的定义

// 筛选器的同步实现
public class SampleActionAttribute :Attribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // 调用操作方法之前执行自定义逻辑
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // 调用操作方法返回之后执行自定义逻辑
    }
}
// 筛选器的异步实现
public class SampleAsyncAttribute : Attribute,IAsyncActionFilter
{
    public async Task OnActionExecutionAsync(
        ActionExecutingContext context, ActionExecutionDelegate next)
    {
        // 调用操作方法之前执行自定义逻辑
        await next();
        // 调用操作方法返回之后执行自定义逻辑
    }
}

4.筛选器的使用

//简单使用
[SampleAction]
public class ControllerFiltersController : Controller
{
    // ...
}

//控制全局筛选器的执行顺序为首先使用
[SampleAction(Order = int.MinValue)]
public class ControllerFiltersController : Controller
{
    // ...
}

5.筛选器的作用域和执行顺序

当管道的某个特定阶段有多个筛选器时,作用域可确定筛选器执行的默认顺序。 全局筛选器涵盖类筛选器,类筛选器又涵盖方法筛选器。

顺序号 筛选器作用域 筛选器方法
1 全局 OnActionExecuting
2 控制器 OnActionExecuting
3 方法 OnActionExecuting
4 方法 OnActionExecuted
5 控制器 OnActionExecuted
6 全局 OnActionExecuted

6.内置筛选器属性

  • ActionFilterAttribute
  • ExceptionFilterAttribute
  • ResultFilterAttribute
  • FormatFilterAttribute
  • ServiceFilterAttribute
  • TypeFilterAttribute

参考资源:

ASP.NET Core 中的筛选器 | Microsoft Learn

正文完
 
马化云
版权声明:本站原创文章,由 马化云 2023-10-22发表,共计1330字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。