MVC和Web API 过滤器Filter
2017-09-09 09:20
447 查看
MVC和Web API Filter(过滤器)
ASP.NET MVC 支持以下类型的操作筛选器:
· 授权筛选器。这些筛选器用于实现IAuthorizationFilter和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全决策。AuthorizeAttribute类和RequireHttpsAttribute类是授权筛选器的示例。授权筛选器在任何其他筛选器之前运行。
· 操作筛选器。这些筛选器用于实现IActionFilter以及包装操作方法执行。IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted。OnActionExecuting在操作方法之前运行。OnActionExecuted在操作方法之后运行,可以执行其他处理,如向操作方法提供额外数据、检查返回值或取消执行操作方法。
· 结果筛选器。这些筛选器用于实现IResultFilter以及包装ActionResult对象的执行。IResultFilter声明两个方法:OnResultExecuting和OnResultExecuted。OnResultExecuting在执行ActionResult对象之前运行。OnResultExecuted在结果之后运行,可以对结果执行其他处理,如修改HTTP响应。OutputCacheAttribute类是结果筛选器的一个示例。
· 异常筛选器。这些筛选器用于实现IExceptionFilter,并在ASP.NET MVC管道执行期间引发了未处理的异常时执行。异常筛选器可用于执行诸如日志记录或显示错误页之类的任务。HandleErrorAttribute类是异常筛选器的一个示例。
授权筛选器 — — 实现的
操作筛选器 — — 实现的
结果筛选器 — — 实现的
异常筛选器 — — 实现的
特别注意:
MVC中过滤器是system.web.Mvc.dll实现
实现全局过滤器:App_Start文件夹下的FilterConfig.cs文件中
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//new Test_Mvc.Mvc_Filter()过滤器类的实例对象
filters.Add(new Test_Mvc.Mvc_Filter());//--注册全局过滤器
}
Web Api 中过滤器 system.web.http.dll中的system.web.http.Filters实现,添加控制器时一定要注意:一定要选择空的API控制器。如果选择空的MVC控制器那么过滤器对该控制器失效。
实现全局过滤器:Global.asax文件的:
protected void Application_Start()
{
//new Test_Http.Http_Filter()过滤器类的实例对象
GlobalConfiguration.Configuration.Filters.Add(newTest_Http.Http_Filter());//--注册全局过滤器
}
注意:
[csharp] view plain copy
using System.Net.Http;
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, T value);
ASP.NET MVC 支持以下类型的操作筛选器:
· 授权筛选器。这些筛选器用于实现IAuthorizationFilter和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全决策。AuthorizeAttribute类和RequireHttpsAttribute类是授权筛选器的示例。授权筛选器在任何其他筛选器之前运行。
· 操作筛选器。这些筛选器用于实现IActionFilter以及包装操作方法执行。IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted。OnActionExecuting在操作方法之前运行。OnActionExecuted在操作方法之后运行,可以执行其他处理,如向操作方法提供额外数据、检查返回值或取消执行操作方法。
· 结果筛选器。这些筛选器用于实现IResultFilter以及包装ActionResult对象的执行。IResultFilter声明两个方法:OnResultExecuting和OnResultExecuted。OnResultExecuting在执行ActionResult对象之前运行。OnResultExecuted在结果之后运行,可以对结果执行其他处理,如修改HTTP响应。OutputCacheAttribute类是结果筛选器的一个示例。
· 异常筛选器。这些筛选器用于实现IExceptionFilter,并在ASP.NET MVC管道执行期间引发了未处理的异常时执行。异常筛选器可用于执行诸如日志记录或显示错误页之类的任务。HandleErrorAttribute类是异常筛选器的一个示例。
不同类型的筛选器
ASP.NET MVC 框架支持四种不同类型的筛选器:授权筛选器 — — 实现的
IAuthorizationFilter属性。
操作筛选器 — — 实现的
IActionFilter属性。
结果筛选器 — — 实现的
IResultFilter属性。
异常筛选器 — — 实现的
IExceptionFilter属性。
特别注意:
MVC中过滤器是system.web.Mvc.dll实现
实现全局过滤器:App_Start文件夹下的FilterConfig.cs文件中
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//new Test_Mvc.Mvc_Filter()过滤器类的实例对象
filters.Add(new Test_Mvc.Mvc_Filter());//--注册全局过滤器
}
Web Api 中过滤器 system.web.http.dll中的system.web.http.Filters实现,添加控制器时一定要注意:一定要选择空的API控制器。如果选择空的MVC控制器那么过滤器对该控制器失效。
实现全局过滤器:Global.asax文件的:
protected void Application_Start()
{
//new Test_Http.Http_Filter()过滤器类的实例对象
GlobalConfiguration.Configuration.Filters.Add(newTest_Http.Http_Filter());//--注册全局过滤器
}
注意:
[csharp] view plain copy
using System.Net.Http;
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, T value);
相关文章推荐
- MVC和Web API 过滤器Filter
- MVC和Web API 过滤器Filter
- MVC和Web API 过滤器Filter [转]
- MVC之 自定义过滤器(ActionFilterAttribute)
- MVC及Web API添加身份验证及错误处理的过滤器
- [转]MVC之 过滤器(Filter)
- ASP.NET MVC 过滤器Filter
- [转]ASP.NET MVC 过滤器Filter
- mvc源码解读(11)-mvc四大过滤器之AuthorizationFilter
- MVC中使用ActionFilterAttribute全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法
- mvc源码解读(14)-mvc四大过滤器之ExceptionFilter
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter 【转】
- mvc源码解读(13)-MVC四大过滤器之ResultFilter
- asp.net MVC之 自定义过滤器(Filter)
- MVC 3.0 使用过滤器(Filter)
- ASP.NET MVC 过滤器Filter
- MVC 自定义过滤器(Filter)实现路由控制、异常处理、授权处理(获取客户端信息)
- ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter
- MVC之 自定义过滤器(Filter)
- Spring+SpringMVC+Mybatis(SSM)框架搭建教程(五)-扩展:过滤器Filter应用