ASP.NET MVC下自定义错误页和展示错误页的方式
在网站运行中,错误是不可避免的,错误页的产生也是不可缺少的。
这几天看了博友的很多文章,自己想总结下我从中学到的和实际中配置的。
首先,需要知道产生错误页的来源,一种是我们的.NET平台抛出的,一种是网站所依赖的宿主抛出的,一般来讲我们所依赖的宿主就是IIS了。
IIS中的错误页入口:
其中的错误码想必并不陌生
这里是在服务器上找不到所需资源时抛出的错误页,在这里可以设置需要展示的错误页面,只需将预定的错误页面加入服务器中,然后在指定状态码下配置路径即可。
这是请求在IIS中时,还未完全进入到asp.net mvc中,这里需要理解什么是未完全进入,IIS7+的版本中,不依赖于请求路径末尾的标识信息,利用mvc中的urlRoutingModule进行处理,在我们配置mvc的路由时,首先的第一条:
便是隔离非mvc内部的使用文件,如果请求的只是服务器上的文件,那么路由便会在这里进行过滤,使之不匹配具体路由信息。
也就只是和mvc打了个招呼 然后就走了,没有进入mvc中搞事情。
第二种是,进入了asp.net mvc的管辖范围,然后在其中出错了,便是跳到我们在程序中配置的错误页了。
首先讲讲我从博友那里学到的、看到的几种方式。
第一种是在web.config中通过customError配置。
但是这种方式不怎么令人接受,太过于简单,没有一点异常信息,并且有时候还不能起效果,我不太喜欢这种方式。
这种是用框架封装好的,利用的是将要说的第三种的强大方式实现的,当有异常发生又没得捕获时,最终利用的第三种方式自动实现。
第二种是利用HandlerErrorAttribute 特性,利用AOP的方式,当有异常出现时,便会进入具体实现了这个特性的,且被注册了的ExceptionAttribute职责中。