在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
继承Attribute,IActionFilter实现自己的过滤器类,并且在Startup,mvc服务中注入. 全局都会过滤,在任意一个controller,action执行前和执行后都会过滤一次 通过Attribute特性标识到想要过滤的地方实现局部过滤(controller,action) IActionFilter继承需要实现两个方法OnActionExecuted,OnActionExecuting,分别是动作执行后和动作执行前 注意点:当你实现自定义过滤器注入后,又实现了该类别过滤器的特性.那么执行顺序是全局过滤器OnActionExecuting,再是特性OnActionExecuting,再是特性OnActionExecuted,最后是过滤器OnActionExecuted. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); //services.AddMvc(options => options.Filters.Add(new MyActionFilters())); }
/// <summary> /// 继承Attribute,IActionFilter实现自己的过滤器类,并且在Startup,mvc服务中注入. 全局都会过滤,在任意一个action执行前和执行后都会过滤一次 /// 通过Attribute特性标识到想要过滤的地方实现局部过滤(controller,action) /// IActionFilter继承需要实现两个方法OnActionExecuted,OnActionExecuting,分别是动作执行前和动作执行后 /// </summary> public class MyActionFilters : Attribute, IActionFilter { /// <summary> /// 动作前执行 /// </summary> /// <param name="context"></param> public void OnActionExecuted(ActionExecutedContext context) { Console.WriteLine("**********************方法运行后执行****************************"); } /// <summary> /// 动作后执行 /// </summary> /// <param name="context"></param> public void OnActionExecuting(ActionExecutingContext context) { Console.WriteLine("**********************方法运行前执行****************************"); } }
只要返回ContentResult就会短路,后面的所有逻辑不会再处理 public class MyActionFilterAttribute : Attribute, IActionFilter { public void OnActionExecuted(ActionExecutedContext context) { context.Result = new ContentResult() { Content = "Resource unavailable - header should not be set" }; } public void OnActionExecuting(ActionExecutingContext context) { var s = "Attribute_OnActionExecuting"; } }
|
请发表评论