ASP.NET Core MVC 过滤器介绍
http://www.cnblogs.com/tdfblog/p/filters-in-aspnet-core-mvc.html
http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-4_4_3-filters.html
ASP.NET Core 有以下五种类型的过滤器,每个过滤器类型在过滤器管道中的不同阶段执行:
- Authorization Filter
授权过滤器 在过滤器管道中第一个执行,通常用于验证当前请求的合法性,不合法后面的管道会直接跳过。它们只有一个Before方法,不像其它大多数过滤器支持前置阶段方法和后置阶段方法。注意,您不要在授权过滤器中抛出异常,因为没有任何代码来处理异常(异常过滤器不处理它们)。 - Resource Filter
资源过滤器是第二个运行,在 Authorization Filter 之后,Model Binding 之前执行。在性能方面,资源过滤器在实现缓存或截断过滤器管道尤为重要。 - Action Filter
使用率最高的过滤器,在调用 Acioin 方法之前和之后执行代码。跟 Resource Filter 很类似,但 Model Binding 在之后执行。 - Exception Filter
用于为应用程序执行异常处理策略。 - Result Filter
当 Action 执行完成后,最后会执行过滤器。用于处理ActionResult结果输出策略。
您可以通过Attribute将过滤器注册到指定控制器或 Action 方法;您也可以在Startup类的ConfigureServices方法中将过滤器注册到MvcOptions.Filters的集合中作为全局过滤器(对所有的控制器和Action方法均有效):
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.Filters.Add(new AddHeaderAttribute("GlobalAddHeader",
"Result filter added to MvcOptions.Filters")); // an instance
options.Filters.Add(typeof(SampleActionFilter)); // by type
options.Filters.Add(new SampleGlobalActionFilter()); // an instance
});
services.AddScoped<AddHeaderFilterWithDi>();
}
}
浙公网安备 33010602011771号