HandleError 过滤器

[HandleError]过滤器提供了一种声明方式,来在一个ControllerAction方法上表示,如果在处理一个ASP.NET.MVC请求中发生错误的话,应该显示一个友好的错误回复。

要试验一下的话,在项目中加一个新的TestController,实现一个action方法,在其中象下面这样抛出一个异常:

 

 

 

在默认情形下,如果浏览器指向URL的话,它会给远程用户显示一个默认的ASP.NET错误页面(除非你去web.config文件中配置<customErrors>)

 我们可以在我们的Controller类或其中的Action方法上加一个[HandleError]属性,来改变要显示的HTML错误,而对终端用户比较友好的信息:

 

HandleError过滤器会捕捉住所有的异常(包括处理视图模板时抛出的错误),在出错时显示一个定制的Error视图回复。在默认情形下,它试图在你的项目中寻找一个名为Error的视图模板来生成回复。你可以将Error视图置于同个Controller相应的视图的目录之中(例如,上面的TestController\Views\Test目录),也可以置于\Views\Shared文件夹中(系统会先找一个特定于控制器的出错视图,如果没找到的话,会在Shared文件夹中寻找,该文件夹包含了为所有控制器所共享的视图)。

从第四个预览版开始,在你创建新的ASP.NET MVC项目时,Visual Studio现在会自动为你在\Views\Shared文件夹中加一个默认的Error视图模板:

 

在我们的TestController类上加[HandleError]属性后,在默认情形下,它会给远程用户显示一个象下面这样的HTML错误页面(注意,它使用了项目的母板页,这样就将错误信息集成进了站点之中)。很明显地,你可以去定制这个Error视图模板,显示你想要的任何HTML或者更加友好的错误信息,下面只不过是随该版本而来的原装的信息:

 

为帮助开发人员,在本地浏览应用时,Visual Studio中由新的项目模板提供的默认的Error视图模板还会显示额外的错误堆栈跟踪信息:

 

你可以在Error视图模板中将代码删除来将其关闭,或者也可以在你的web.config文件中将<customErrors>设成Off

在默认情形下,[HandleError]过滤器将捕捉和处理请求中抛出的所有异常。你也可以在[HandleError]属性上指定 "ExceptionType""View"属性来指定你感兴趣的特定异常类型,以及指定定制的错误视图:

 

在上面的代码中,我选择为SqlExceptionNullReferenceException异常显示定制的错误视图,所有其它的异常则将使用默认的Error视图模板。

转载于:https://www.cnblogs.com/QIAOYIJUN/archive/2013/04/27/MVC.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值