对于错误日志的输出,我们借助web.config的两个标志位:
<!--全局包装异常处理页面,只有在PageError和Application_Error做清除错误操作才可不跳转--> <!--调试时请设置成Off,生产环境此项必须为On--> <customErrors mode="Off" defaultRedirect="~/ErrorPage/404/index.html"> <error statusCode="404" redirect="~/ErrorPage/404/index.html"/> </customErrors>
<!--调试时请设置成true,生产环境此项必须为false--> <compilation debug="true" targetFramework="4.0">
其中,我重写三个事件:后台页面的基类重写的【PageError】、前台MVC的基类重写的【ControllerException(此事件为自定义名称,参考MVC的错误重写)】、全局Global的【Application_Error】,然后遵循以下原则:
1、【Application_Error】:
①用于前台错误提示策略,非debug模式,开启了默认错误跳转页面,全部只记录堆栈到数据库,不包装跳转,使用默认错误跳转页面
②非debug模式下,只有是localhost访问站点时才显示堆栈
③非debug模式下,没有开启默认错误跳转,直接输出包装的异常信息
2、【ControllerException】:
①MVC前台错误提示策略,非debug模式,开启了默认错误跳转页面,全部只记录堆栈到数据库,不包装跳转,使用默认错误跳转页面
②非debug模式下,只有是localhost访问站点时才显示堆栈
③非debug模式下,没有开启默认错误跳转,直接输出包装的异常信息
3、【PageError】:
①后台错误提示策略,非debug模式,全部记录堆栈到数据库,并包装跳转
②非debug模式下,只有是localhost访问站点时才显示堆栈
附件:
错误页面模板:https://github.com/easonjim/3_web_example/tree/master/htmlpage
时间: 2024-10-12 07:40:24