• .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页代码

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <meta charset="utf-8" />
    </head>
    <body>
        <hgroup>
            <h1 class="text-danger">Error.</h1>
            <h2 class="text-danger">An error occurred while processing your request.</h2>
        </hgroup>
    </body>
    </html>
    
    
    

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

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

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

  • 相关阅读:
    SQL统计
    数据库中GETDATE()函数格式化时间
    C#中Math类的计算整数的三种方法
    Excel 导入到Datatable 中,再使用常规方法写入数据库
    C#实现二维码功能,winform 以及 asp.net均可以用
    JPEG、PNG、GIF三者的区别与联系
    javaScript基础知识--变量提升和闭包
    js基础
    js基础知识
    js基础知识
  • 原文地址:https://www.cnblogs.com/SCscHero/p/16098195.html
Copyright © 2020-2023  润新知