码迷,mamicode.com
首页 > 其他好文 > 详细

第16章 过滤器

时间:2015-07-16 08:22:56      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

----------------------------------------------

:ActionFilterAttribute类既实现了IActionFilter,也实现IResultFilter接口。是一个抽象类,要求你必须提供一个实现(派生类)。

  而 AuthorizeAttibute和HandleErrorAttribute,则包含了一些有用的特性,并且可以不必创建派生类进行使用。

:如果为控制器定义了一个自定义基类,那么运用于基类上的任何过滤器都会影响其派生类。

 ----------------------------------------------

一、使用过滤器

  1.过滤器:把附加逻辑注入到MVC框架的请求处理。是.NET的注解属性(Attribute),对请求处理管道添加了额外的步骤。

  2.注解属性:派生于System.Attribute的特殊的.NET类。可以附加到其他代码元素(类、方法、属性、字段等)上。

  目的是把附加信息嵌入到已编译的代码中,以便在运行时读回信息。

  在C#中注解属性以Atttibute结尾,用方括号[]进行附加,可以用已命名参数语法给它们的属性(public)赋值,

  在使用注解属性时,尾部的Attibute是省略的:AuthorizeAttibute->[Authorize]

  3.交叉关注:可以用于整个应用程序,而又不适合旋转在某个局部位置的功能,否则会打破关注分离模式(登录、授权、缓存等)。

MVC框架的过滤器类型

过滤器类型 接口 默认实现 描述
Authorization(认证) IAuthorizationFilter AuthorizeAttibute 最先运行,在任何其它过滤器或动作方法之前
Action(动作) IActionFilter ActionFilterAttribute 在动作方法之前及之后运行
Result(结果) IResultFilter ActionFiterAttribute 在动作结果被执行之前和之后运行
Exception(异常) IExceptionFiter HandleErrorAttribute 仅在另一个过滤器、动作方法、或动作结果抛出异常时运行

  4.内建授权过滤器:(AuthorizeAttribute)

    (1)属性 Users:string 一个逗号分隔的用户名列表,允许这些用户访问该动作方法

     (2)属性 Roles:string 一个逗号分隔的角色列表。为了访问该动作方法,用户必须至少是这些角色之一

  5.异常过滤器:(HandleErrorAttribute)

    (1)异常过滤器的主要应用:1.对异常进行日志,2.将适当的消息显示给用户。

    ExceptionContext属性

名称 类型 描述
Controller ControllerBase 返回请求的控制器对象
HttpContext HttpContextBase 提供对请求细节的访问,以及对响应的访问
IsChildAction bool 子动作判断
RequestContext RequestContext 提供HttpContext和路由数据的访问
RouteData RouteData 返回请求的路由数据

 

  ExceptionContext额外的属性

 

名称 类型 描述
ActionDescriptor ActionDescriptor 提供动作方法的细节
Result ActionResult 用于动作方法的结果
Exception Exception 未处理异常
ExceptionHandled bool 如果别的过滤器已经把这个异常标记为“已处理”,则返回true

  

  HandleErrorAttribute属性

 

名称 类型 描述
ExceptionType Type 由过滤器处理的异常类型。它也处理通过给定值继承而来的异常类型,但会忽略所有其他类型。默认为System.Exception,默认处理所有标准异常
View string 该过滤器渲染的视图名。默认是Error。默认渲染/View/<cuttentControllerName>/Error.html或/View/Shared/Error.htm
Master string 在渲染这个过滤器的视图时所使用的布局名称。默认布局页面

    (2)使用内建异常过滤器要在Web.config中〈system.web〉节点中〈pages〉节点之后增加

             /pages〉〈customErrors mode="on" defaultRedirect="/Content/RangeErrorPage.html" /〉〈/system.web〉

      mode:默认是RemoteOnly,指在开发期间,HandleErrorAttribute将不会拦截异常,只是部署之后,并从另一台电脑发出请求时,才生效。

       deaultRedirect:指定一个内容页面,在其他情况下都无法显示异常消息时,便使用该页面。

 

第16章 过滤器

标签:

原文地址:http://www.cnblogs.com/wjs5943283/p/4644083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!