您现在的位置是:首页 > .Net > 理解.Net Core中的过滤器

理解.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。

执行顺序:

null

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:执行成功

null


评论

暂无评论