asp.net之ActionFilter过滤器【C#.Net教程】,ActionFilter,asp.net,过滤器
作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:36评论:0
本系类将会解说asp.net core MVC中的内置过滤器的运用,将分为以下章节
asp.net core MVC 过滤器之ExceptionFilter过滤器(一)
asp.net core MVC 过滤器之ActionFilter过滤器(二)
asp.net core MVC 过滤器之ResultFilter过滤器(三)
asp.net core MVC 过滤器之ResourceFilter过滤器(四)
asp.net core MVC 过滤器之AuthorizationFilter过滤器(五)
简介
Action过滤器将在controller的Action实行之前和以后实行响应的要领。
完成一个自定义Action过滤器
自定义一个全局非常过滤器须要完成IActionFilter接口
public class ActionFilter : IActionFilter { public void OnActionExecuted(ActionExecutedContext context) { Console.WriteLine("action实行以后"); } public void OnActionExecuting(ActionExecutingContext context) { Console.WriteLine("action实行之前"); } }
IActionFilter须要完成两个要领OnActionExecuted,OnActionExecuting。OnActionExecuting将在Action之前实行,OnActionExecuted在Action以后实行。
晓得道理以后我们们就能够应用其特征来简化我们的代码,在MVC中一个主要的观点就时Model考证,我们定义Model束缚,然后在Action中考证Model是不是绑定胜利,我们的Action中反复地写以下代码
[HttpGet] public ActionResult Get() { if (!ModelState.IsValid) return BadRequest("参数毛病!"); }
如许反复的代码不仅增添代码庞杂都也不美观,我们能够在ActionFilter中自动完成
public void OnActionExecuting(ActionExecutingContext context) { if (context.ModelState.IsValid) return; var modelState = context.ModelState.FirstOrDefault(f => f.Value.Errors.Any()); string errorMsg = modelState.Value.Errors.First().ErrorMessage; throw new AppException(errorMsg); }
当Model绑定毛病时,我们抛出非常信息,并在上一章节的非常过滤器ExceptionFilter中捕捉,返回毛病信息给要求方。
我们也能够应用ActionFilter的特征来纪录Action的实行时间,当Action实行时间过慢时输出正告日记
public class ActionFilter : IActionFilter { public void OnActionExecuted(ActionExecutedContext context) { var httpContext = context.HttpContext; var stopwach = httpContext.Items[Resources.StopwachKey] as Stopwatch; stopwach.Stop(); var time = stopwach.Elapsed; if (time.TotalSeconds > 5) { var factory = context.HttpContext.RequestServices.GetService<ILoggerFactory>(); var logger = factory.CreateLogger<ActionExecutedContext>(); logger.LogWarning($"{context.ActionDescriptor.DisplayName}实行耗时:{time.ToString()}"); } } public void OnActionExecuting(ActionExecutingContext context) { var stopwach = new Stopwatch(); stopwach.Start(); context.HttpContext.Items.Add(Resources.StopwachKey, stopwach); } }
上面的代码应用运用HttpContext通报一个Stopwach来盘算action的实行时间,并在凌驾5秒时输出正告日记。
注册全局过滤器
注册要领与ExceptionFinter雷同。找到体系根目录Startup.cs文件,修正ConfigureServices要领以下
services.AddMvc(options => { options.Filters.Add<ActionFilter>(); });
以上就是asp.net之ActionFilter过滤器的细致内容,更多请关注ki4网别的相干文章!
相关推荐
- 实例引见asp.net项目开辟中罗列的运用【C#.Net教程】,asp.net,枚举
- 分享一个asp.net完成多个文件同时下载的要领【C#.Net教程】,asp.net,多文件下载
- asp.net core实例教程之非常处置惩罚与静态文件教程【C#.Net教程】,asp.net ,core,异常处理,静态文件
- 关于ASP.NET中过滤器、模子绑定的实例详解【C#.Net教程】,asp.net,mvc,模型绑定,asp.net,mvc,过滤器,mvc,模型绑定
- Asp.Net MVC进修总结之过滤器详解(图文详解)【C#.Net教程】,asp.net,mvc,过滤器
- asp.net core mvc权限掌握 在视图中掌握操纵权限的代码示例细致引见【C#.Net教程】,asp.net,core,mvc
- asp.net怎样运用js文件【C#.Net教程】,asp.net
- asp.net是什么【C#.Net教程】,asp.net,asp.net是什么
- asp.net与php哪一个好?【php问题】,asp.net,php
- asp.net mvc中完成Forms身份验证身份验证流程的实例【C#.Net教程】,asp.net,Forms,验证
你 发表评论:
欢迎- .Net教程排行
-
- 1案例分享c++ map的运用和 查找机能测试【C#.Net教程】,性能,map,c++
- 2细致引见C# string花样的日期时候字符串转为DateTime范例的要领【C#.Net教程】,C#,string,DateTime
- 3详解ASP.NET中衔接数据库设置要领【C#.Net教程】,ASP.NET,数据库,配置
- 4c#怎样运用?c#的基础语法【C#.Net教程】,c#,关键字
- 5C# DataSet机能最好实践【C#.Net教程】,C#,DataSet
- 6C#_挪用封装的一个类完成导出Excel表格的功用【C#.Net教程】,C# Excel表格
- 7让WebAPI 返回JSON花样的数据实例教程【C#.Net教程】,javascript,WebAPI,JSON,api,web,搭建,返回
- 8在C++中对象怎样作为参数通报和返回?(代码示例)【C#.Net教程】,C++,对象
- 9.net和c#有什么区别【C#.Net教程】,.net,c#
- 最新文章
- 广而告之