.Net MVC实现全局异常捕捉返回通用异常页面的一种方式


阅文时长 | 0.54分钟 字数统计 | 876字符
主要内容 | 1、引言&背景 2、部分通用设计代码 3、声明与参考资料
『.Net MVC实现全局异常捕捉返回通用异常页面的一种方式』
编写人 | SCscHero 编写时间 | 2022/4/3 PM11:54
文章类型 | 系列 完成度 | 已完成
座右铭 每一个伟大的事业,都有一个微不足道的开始。

一、引言&背景   完成度:100%

a) 应对问题&背景

在最近的EPA扫描中,出现了一个安全漏洞:将异常详细信息、堆栈调用暴露到了前端。如图,也是各位.Neter耳熟能详的,司空见惯的一张图。

那么本文也是分享一种简单的设计方式。当然设计方式有很多种,也有很多设计方式思路都差不多,一通百通。博主就当做一个代码包方便日后复用及分享他人。

b) 应用场景

  • 在发生异常时,将异常详细信息、堆栈调用暴露到了前端。
  • 基于.Net FW MVC技术栈。

c) 分析思路

  1. 新增一个全局异常处理类CustomGlobalErrorAttribute,继承HandleErrorAttribute全场异常处理类,重写OnException方法。加入跳转到异常通用页等逻辑。
  2. 在GlobalFilterCollection类中配置自定义的CustomGlobalErrorAttribute。

二、部分通用设计代码   完成度:100%

a) CustomGlobalErrorAttribute

自定义全局异常处理类CustomGlobalErrorAttribute可如下设计:

    public class CustomGlobalErrorAttribute: HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);

            //TODO:处理错误消息。跳转到一个错误也页面

            //TODO:页面跳转到错误页面
            filterContext.HttpContext.Response.Redirect("~/Error.html");
        }
    }

b) 在GlobalFilterCollection中配置

配置如下,一般在Global.asax.cs文件中加入,也可以封装一下:

GlobalFilters.Filters.Add(new CustomGlobalErrorAttribute());

c) 通用Error页代码




    
    
    


    

Error.

An error occurred while processing your request.

三、声明与参考资料   完成度:100%

原创博文,未经许可请勿转载。

如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。