[.Net MVC] 过滤器以及异常处理
项目:后台管理平台
意义:程序发布后,不应该对用户显示因程序出错和崩溃而出现的错误信息,采用统一友好的错误页面,并将错误信息记录到日志中供管理人员查看。
一、过滤器Filter
Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑,以非常简单优美的方式实现横切关注点(Cross-cutting Concerns)。横切关注点是指横越应该程序的多个甚至所有模块的功能,经典的横切关注点有日志记录、缓存处理、异常处理和权限验证等。
MVC框架支持4类Filter,Authorization Filter/Action Filer/Result Filter/Exception Filter,其中Authorization Filter的默认实现AuthorizeAttribute类,Action Filter和Result Filter的默认实现是ActionFilterAttribute类,Exception Filter的默认实现是HandleErrorAttribute。
Filter可以像标记属性一样用在动作、控制器上,也可以在应用在全局上,在Global.asax.cs和FilterConfig.cs中添加全局绑定。
如果默认的Filter无法满足开发要求,需要自己开发Filter时,最好的方法是继承默认的类,重写关键函数:
Authorization Filter的扩展通过继承AuthorizeAttribute类,重写权限认证的逻辑函数AuthorizeCore;
Action Filer和Result Filter的扩展通过继承ActionFilterAttribute类,重写OnActionExecuting/OnActionExecuted/OnResultExecuting/OnResultExecuted函数;
Exception Filter的扩展通过继承HandleErrorAttribute类,重写OnException函数。
二、异常处理
在项目中采用了全局性的异常处理,因此通过继承HandleErrorAttribute,并重写OnException函数,目前只是增加了异常的日志记录。
出现了异常还需要一个对用户友好的显示页面,在Web.config文件中 <system.web> 节点下添加如下节点:
<customErrors mode="On">
<error statusCode ="" redirect="/Error/Index"/>
</customErrors>
对于程序运行时抛出的错误,系统会在~/Views/[current controller]或~/Views/Shared目录下查找名为Error的视图;对于404这类的HTTP错误,可以通过添加对应的节点,指定其显示的错误页面,再编写对应的控制器、视图即可。
参考资源:
http://www.cnblogs.com/willick/p/3331520.html
http://www.cnblogs.com/powertoolsteam/p/MVC_Six.html
关键字:.NET MVC,Filter,EXCEPTION,AOP
[.Net MVC] 过滤器以及异常处理的更多相关文章
- mvc过滤器学习(1)
mvc 过滤器结构图 AuthorizeAttribute AuthorizeAttribute是IAuthorizationFilter的默认实现,添加了Authorize特性的Action将对用户 ...
- mvc自定义全局异常处理
异常信息处理是任何网站必不可少的一个环节,怎么有效显示,记录,传递异常信息又成为重中之重的问题.本篇将基于上篇介绍的html2cancas截图功能,实现mvc自定义全局异常处理.先看一下最终实现效果: ...
- asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
重构的乐趣在于精简代码,模块化设计,解耦功能……而对异常处理的重构则刚好满足上述三个方面,下面是我的一点小心得. 一.相关的学习 在文章<精简自己20%的代码>中,讨论了异常的统一处理,并 ...
- MVC过滤器详解
MVC过滤器详解 APS.NET MVC中(以下简称"MVC")的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理. ...
- MVC过滤器使用案例:统一处理异常顺道精简代码
重构的乐趣在于精简代码,模块化设计,解耦功能……而对异常处理的重构则刚好满足上述三个方面,下面是我的一点小心得. 一.相关的学习 在文章<精简自己20%的代码>中,讨论了异常的统一处理,并 ...
- ASP.NET MVC 过滤器详解
http://www.fwqtg.net/asp-net-mvc-%E8%BF%87%E6%BB%A4%E5%99%A8%E8%AF%A6%E8%A7%A3.html 我经历了过滤器的苦难,我想到了还 ...
- ASP.NET MVC过滤器(一)
MVC过滤器是加在 Controller 或 Action 上的一种 Attribute,通过过滤器,MVC 网站在处理用户请求时,可以处理一些附加的操作,如:用户权限验证.系统日志.异常处理.缓存等 ...
- MVC过滤器详解和示例
原文 http://blog.csdn.net/ankeyuan/article/details/29624005 MVC过滤器一共分为四个:ActionFilter(方法过滤器),ResultFi ...
- MVC过滤器的详细讲解和示范样本
MVC共有4个过滤器:ActionFilter(方法过滤器),ResultFilter(结果过滤器.感觉是不是很好,所以称它为),AuthorizationFilter(授权过滤器).Exceptio ...
随机推荐
- linux搜索jar内容
linux搜索 spring-beans-2.5.6.jar 内容 1.jar tvf spring-beans-2.5.6.jar -c 创建新的归档文件 -t 列出归档目录 -x 解压缩 ...
- php获取内容中第一张图片地址
$note = '<img src="http://images.xxx.com/article/cover/201601/20/141539161273.png?imageView2 ...
- cdoj 92 Journey tarjan/lca 树上点对距离
Journey Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/92 Descri ...
- oracle数据库表空间及归档
--表空间(TableSpace)是Oracle的开创性理念.表空间使得数据库管理更加灵活,而且极大地提高了数据库性能. --作用 :1.避免磁盘空间突然耗竭的风险 2.规划数据更灵活 3.提高数据库 ...
- Android模拟器操作快捷键
你可以通过模拟器的启动选项和控制台命令来控制模拟环境的行为和特性.一旦模拟器启动,你就可以通过键盘和鼠标来“按” 模拟器的按键,从而操作模拟器.下面的表格总结了模拟器按键可键盘按键之间的映射关系. 模 ...
- android学习日记07--Canvas画布
1.Canvas Canvas类主要实现了屏幕的绘制过程,其中包含了很多实用的方法,比如绘制一条路径.区域.贴图.画点.画线.渲染文本,当然Android官网提示大家很多方法有不同的重载版本,参数更灵 ...
- 笨办法学C 练习
http://c.learncodethehardway.org/book/index.html
- Linux下用dump实现备份和还原 ux下用dump实现备份和还原
对于系统而言,我们可以有很多种办法去备份(还原)系统或文件,之所以要去做备份,就是为了在系统或文件遭到损害时,能及时恢复,把损失减小到最小.当然,对于企业服务器而言,备份的重要性是举足轻重.咱们今天就 ...
- php动态调用方法_sux
<form action=""> <input type="hidden" name="mod" id="mo ...
- xss脚本攻击
xss脚本攻击不仅仅只是alert(1)就算完了,xss脚本攻击真正的用处是盗取普通用户的cookie,或者盗取管理员的cookie. xss分类(类型): 1. 反射型xss2. 存储型xss3. ...