过滤器类型
net core 有五种过滤器,每个过滤器类型在过滤器管道中的不同阶段执行:
1:AuthorizationFilterAttribute 授权过滤器
2:ResourceFilterAttribute 资源过滤器
3:ExceptionFilterAttribute 异常过滤器
4:ActionFilterAttribute方法过滤器
5:ResultFilterAttribute 结果过滤器
Filter 执行顺序
ResultFilterAttribute
异步环绕操作结果执行的抽象筛选器。 子类必须重写,OnResultExecuted(ResultExecutedContext))或者OnResultExecutionAsync(ResultExecutingContext, ResultExecutionDelegate))
属性
| Order | 获取用于确定筛选器执行顺序的顺序值。 筛选器以属性的 Order 升序数值执行。 |
|---|---|
方法
| OnResultExecuted(ResultExecutedContext)) | 在操作结果执行之后调用。 |
|---|---|
| OnResultExecuting(ResultExecutingContext)) | 在操作结果执行之前调用。 |
| OnResultExecutionAsync(ResultExecutingContext, ResultExecutionDelegate)) | 在操作结果之前异步调用。 |
示例
using Microsoft.AspNetCore.Mvc.Filters;namespace Net6.Filter.Demo.Filters;public class CustomerResultFilter : ResultFilterAttribute{public override void OnResultExecuted(Microsoft.AspNetCore.Mvc.Filters.ResultExecutedContext context) {Console.WriteLine("OnResultExecuted");}public override void OnResultExecuting(Microsoft.AspNetCore.Mvc.Filters.ResultExecutingContext context) {Console.WriteLine("OnResultExecuting");}}
ActionExecutedContext
操作筛选器的上下文,特别是 OnActionExecuted(ActionExecutedContext)) 调用。
属性
| ActionDescriptor | 获取或设置 ActionDescriptor 所选操作。 |
|---|---|
| Canceled | 获取或设置操作筛选器对操作和操作筛选器管道进行短路的指示。 |
| Controller | 获取包含操作的控制器实例。 |
| Exception | 获取或设置 Exception 在执行操作或操作筛选器时捕获的捕获(如果有)。 |
| ExceptionDispatchInfo | 获取或设置捕获的 Exception 、如果捕获了此信息,则获取或设置ExceptionDispatchInfoException该信息。 |
| ExceptionHandled | 获取或设置已处理的指示 Exception 。 |
| Filters | 获取所有适用的 IFilterMetadata 实现。 |
| HttpContext | 获取或设置 HttpContext 当前请求。 |
| ModelState | 获取 ModelStateDictionary。 |
| Result | 获取或设置 IActionResult。 |
| RouteData | 获取或设置 RouteData 当前请求。 |
方法
| FindEffectivePolicy |
返回应用于与FilterContext该操作关联的操作类型TMetadata的最有效 (最具体的) 策略。 |
|---|---|
| IsEffectivePolicy |
返回一个值,该值指示所提供的 IFilterMetadata 策略是否是应用于与 FilterContext该操作关联的操作的最有效策略 (最具体的) 。 |
ActionExecutingContext
属性
| ActionArguments | 获取调用操作时要传递的参数。 键是参数名称。 |
|---|---|
| ActionDescriptor | 获取或设置 ActionDescriptor 所选操作。 |
| Controller | 获取包含操作的控制器实例。 |
| Filters | 获取所有适用的 IFilterMetadata 实现。 |
| HttpContext | 获取或设置 HttpContext 当前请求。 |
| ModelState | 获取 ModelStateDictionary。 |
| Result | 获取或设置 IActionResult 要执行的。 设置为 Result 操作筛选器中的非null 值会使操作和剩余的任何操作筛选器短路。 |
| RouteData | 获取或设置 RouteData 当前请求。 |
方法
| FindEffectivePolicy |
返回应用于与FilterContext该操作关联的操作类型TMetadata的最有效 (最具体的) 策略。 |
|---|---|
| IsEffectivePolicy |
返回一个值,该值指示所提供的 IFilterMetadata 策略是否是应用于与 FilterContext该操作关联的操作的最有效策略 (最具体的) 。 |
ResultExecutedContext
Properties
| ActionDescriptor | 获取或设置所选操作的 ActionDescriptor。 |
|---|---|
| Canceled | 获取或设置操作筛选器对操作和操作筛选器管道进行短路的指示。 |
| Controller | 获取或设置操作筛选器对操作和操作筛选器管道进行短路的指示。 |
| Exception | 获取或设置 Exception 在执行操作或操作筛选器时捕获的捕获(如果有)。 |
| ExceptionDispatchInfo | 获取或设置捕获的 Exception 、如果捕获了此信息,则获取或设置ExceptionDispatchInfoException该信息。 |
| ExceptionHandled | 获取或设置已处理的指示 Exception 。 |
| Filters | 获取所有适用的 IFilterMetadata 实现。 |
| HttpContext | 获取或设置 HttpContext 当前请求。 |
| ModelState | 获取 ModelStateDictionary。 |
| Result | 获取或设置 IActionResult 要执行的。 设置为 Result 操作筛选器中的非null 值会使操作和剩余的任何操作筛选器短路。 |
| RouteData | 获取或设置 RouteData 当前请求。 |
Methods
| FindEffectivePolicy |
返回应用于与FilterContext该操作关联的操作类型TMetadata的最有效 (最具体的) 策略。 |
|---|---|
| IsEffectivePolicy |
返回一个值,该值指示所提供的 IFilterMetadata 策略是否是应用于与 FilterContext该操作关联的操作的最有效策略 (最具体的) 。 |
ResultExecutingContext
Properties
| ActionDescriptor | 获取或设置所选操作的 ActionDescriptor。 |
|---|---|
| Cancel | 获取或设置操作筛选器对操作和操作筛选器管道进行短路的指示。 |
| Controller | 获取或设置操作筛选器对操作和操作筛选器管道进行短路的指示。 |
| Filters | 获取所有适用的 IFilterMetadata 实现。 |
| HttpContext | 获取或设置 HttpContext 当前请求。 |
| ModelState | 获取 ModelStateDictionary。 |
| Result | 获取或设置 IActionResult 要执行的。 设置为 Result 操作筛选器中的非null 值会使操作和剩余的任何操作筛选器短路。 |
| RouteData | 获取或设置 RouteData 当前请求。 |
Methods
| FindEffectivePolicy |
返回应用于与FilterContext该操作关联的操作类型TMetadata的最有效 (最具体的) 策略。 |
|---|---|
| IsEffectivePolicy |
返回一个值,该值指示所提供的 IFilterMetadata 策略是否是应用于与 FilterContext该操作关联的操作的最有效策略 (最具体的) 。 |
