【转】ASP.net MVC自定义错误处理页面的方法
在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那么默认的,当这个Action抛出了异常时MVC将会显示Error视图,该视图位于~/Views/Shared目录下.
设置HandleError属性
可以通过设置下面这些属性来更改HandleErrorAttribute特性的默认处理:
ExceptionType.指定过滤器处理那种或哪些类型的异常,如果没有指定该属性,过滤器将会处理所有的异常.
View.指定发生异常时过滤器要显示的视图名称.
Master.指定视图母版的名称,如果有的话.
Order.指定过滤器应用的顺序,如果一个Action有多个HandleErrorAttribute过滤器.
指定Order属性
如果某个Action设置了多个HandleErrorAttribute,Order属性可以用来确定使用哪个过滤器.其值可以设置为从-1(最高优先级)到任何正整数之间的整数来标识其优先级,值越大,优先级别越低.Order属性遵循以下规则:
应用到Controller上的过滤器将会自动应用到该Controller的所有Action上.
如果Controller和Action都应用了HandleErrorAttribute,那么只要Order属性值相同,将会先执行Controller上的过滤器,而后才会执行Action上的过滤器.
对于相同Order属性的过滤器,其执行先后次序不定.
如果没有指定Order属性,则默认为-1,这意味着该过滤器将比其他的过滤器优先执行,除非其他过滤器指定了Order为-1.
如果有多个过滤器可适用,那么第一个可以处理该异常的过滤器会被首先调用,然后针对该异常的处理将会终结.
在View中获取异常信息
ASP.NET MVC框架将异常信息存储在ViewDataDictionary中来传递给Error视图,该ViewDataDictionary的Model属性即是ExceptionContext类的一个实例,这个ViewData有下面几个键:
ActionName:目标Action方法的名称
ControllerName:目标Controller的名称
Exception:异常对象.
启用自定义错误处理
下面我们来开启用于HandleErrorAttribute过滤器的自定义错误处理,打开程序的Web.config文件,在system.web节中加入一个customErrors元素,如下所示
<system.web> <customErrors mode="On" defaultRedirect="Error" /> </system.web> |
处理Error视图中的错误
有时候在Error视图中也会发生错误,这时ASP.NET将会显示其默认的错误页面(黄底红字),为了避免这种情况的出现,我们在Web.config文件的customErrors节中来自定义错误页面,如下:
<system.web> <customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> <error statusCode="500" redirect="/Error.htm" /> </customErrors> </system.web> |
示例程序
下面的示例说明了如何对Controller和Action应用HandleErrorAttribute特性来自定义异常处理.
示例中HomeController有一个名为ThrowException的Action方法,在该Action中将会抛出一个ApplicationException类型的错误,这个Action应用了HandleErrorAttribute,但是没有设置任何参数.当该Action执行时将会抛出一个异常,显示默认的Error视图.
而ThrowNotImplemented方法则应用了设有两个参数的HandleErrorAttribute,View参数指定了自定义的Error视图名称:CustomErrorView,ExceptionType参数指定了该过滤器仅处理ThrowNotImplemented类型的异常.
Controller的HandleErrorAttribute则设置了Order参数为2,意味着该过滤器只会被在Index或About方法产生异常时执行.
同时示例给出了视图CustomErrorView和CustomError.Master的内容.
视图CustomErrorView显示异常的信息,比如抛出异常的Controller和Action的名称,异常的内容以及堆栈跟踪信息.
转载于:https://www.cnblogs.com/JosephLiu/archive/2010/02/22/1670839.html
【转】ASP.net MVC自定义错误处理页面的方法相关推荐
- ASP.net MVC自定义错误处理页面的方法
在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...
- [转载]针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结
针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结 汪宇杰 2014-1-11 星期六 02:31 455 Reads 1 Comments 自定义错误页面和异常记录是个很古老的话题了, ...
- ASP.NET MVC 自定义路由中几个需要注意的小细节
本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...
- ASP.NET MVC 自定义Razor视图WorkContext
概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...
- ASP.NET MVC 访问html静态页面
ASP.NET MVC 访问html静态页面 大家应该遇到过当我直接访问一个前端页面时,报404这个错误 那么我们就来解决访问View文件夹下的html页面的问题: 想说明问题出现的原因,很简单,就是 ...
- 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面
使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面 使用Donut Caching和Donut Hole Caching在ASP.NET MVC ...
- asp.net mvc 自定义 pager 封装与优化
asp.net mvc 自定义 pager 封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, ...
- ASP.NET MVC如何使用Ajax的辅助方法
前言:前面我们已经简单的介绍过了MVC如何Jquery,因为我们如果使用Ajax的话必须要了解Jquery,这篇博客我们将大致了解一下ASP.NET MVC如何使用Ajax的辅助方法,此博客是我的读书 ...
- 在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图
在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图 前提介绍 这个文章我们要讨论,在ASP.NET MVC模型的项目中,怎么选择一个最有效的方式来将多个数据模型(m ...
最新文章
- 创建属于自己的调色板
- 【渝粤题库】广东开放大学 人力资源管理 形成性考核
- Spring基于状态机squirrel-foundation简单使用
- 微信公众号无限群发消息 v5.7.1 多功能版全开源 + 配置教程
- Spring_自动装配
- 【金融】【python】三因子(three factor)简单模型实证
- 今天,Java 12 正式发布了!
- 虚拟机才是 Kubernetes 的未来?
- 如何用仅用C语言判断编译器的大小端
- fpga板子怎么和电脑连_干货教程 | 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程...
- 最优传输论文(十七):Sinkhorn Distances: Lightspeed Computation of Optimal Transport论文原理
- opencv学习(三十六)图像直方图均衡化equalizeHist
- 毕业设计 基于stm32的灯光控制系统 物联网
- vue3 路由缓存页面
- 北京大学可视化发展前沿研究生暑期学校Day4
- 虚拟信用卡最大的发行商有哪些?
- BUUCTF Web 极客大挑战 2019 EasySQL
- VBA中的Nz 函数使用
- 随机森林之信贷风险模型特征工程
- 离散数学考前复习:(五)图