理解.Net Core中的过滤器
王递杰 2023年9月10日 .Net
简介相信各位从ASP.NET MVC一路走来的朋友一定对过滤器Filter不陌生,只不过MVC中的过滤器有4种,而到了Core中多了一种过滤器,下面就本人学习的Core中的过滤器简单做一下记录。
ASP.NET Core中的Filter的五种类型:
Authorization filter、
Resource filter、
Action filter、
Exception filter、
Result filter。
执行顺序:
Action Filter
1、IAsyncActionFilter接口
2、当有多个Action Filter,链式执行。
筛选器1 →next→ 筛选器2 →next→ 筛选器3
筛选器1 ←----- 筛选器2 ←----- 筛选器3
举例:
public class MyActionFilter1 : IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context,ActionExecutionDelegate next)
{
Console.WriteLine("MyActionFilter 1:开始执行");
ActionExecutedContext r = await next();
Console.WriteLine("MyActionFilter 1:执行成功");
}
}
public class MyActionFilter2 : IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context,
ActionExecutionDelegate next)
{
Console.WriteLine("MyActionFilter 2:开始执行");
ActionExecutedContext r = await next();
Console.WriteLine("MyActionFilter 2:执行成功");
}
}
注入服务:
builder.Services.Configure<MvcOptions>(options =>
{
options.Filters.Add<MyActionFilter1>();
options.Filters.Add<MyActionFilter2>();
});
请求方法:
[HttpGet]
public string GetFunction()
{
Console.WriteLine("~~GetFunction方法~~");
return "my func";
}
运行结果:
MyActionFilter 1:开始执行
MyActionFilter 2:开始执行
~~GetFunction方法~~
MyActionFilter 2:执行成功
MyActionFilter 1:执行成功
相关博客
评论
暂无评论
随笔分类
Powered by .NET 6.0 陕ICP备2020018176号-4