目录
需求目标原理与思路实现的其余阶段之前运行代码。OnResourceExecuted在管道的其余阶段完成之后运行代码。可以用这个类型的Filter进行缓存和性能统计。Action Filters:在调用操作方法之前和之后立即运行代码。它可以更改传递到操作中的参数,也可以更改从操作返回的结果,当然如果什么都不更改仅作记录也是可以的。
Exception Filters:在向响应正文写入任何内容之前,对未经处理的异常应用全局策略。
Result Filters:在执行操作结果返回之前和之后运行代码。 仅当操作方法成功执行时,它们才会被运行。
这五种Filters在Filter Pipeline中直观的展现是这样的:
ontroller.cs
[HttpPost][ServiceFilter(typeof(LogFilterAttribute))]public async Task<ApiResponse<Domain.Entities.TodoList>> Create([FromBody] CreateTodoListCommand command){ return ApiResponse<Domain.Entities.TodoList>.Success(await _mediator.Send(command));}验证
启动Api项目,执行创建TodoList的请求:
请求

响应
来自于OnActionExecuting的请求数据日志:

注意在我们上一篇文章中的Handling CreateTodoListCommand之前输出的内容。
以及来自于OnActionExecuted输出的返回数据日志:

总结
在本文中我们通过一个很简单的例子,演示了Action Filter的基本用法。至此我们关于请求中间件管道的讨论先告一个段落,后面说到认证鉴权的时候我们还会回来讨论这个主题。








