阅文时长 | | 0.54分钟 | 字数统计 | | 876字符 |
主要内容 | | 1、引言&背景 2、部分通用设计代码 3、声明与参考资料 | ||
『.Net MVC实现全局异常捕捉返回通用异常页面的一种方式』 | |||
编写人 | | SCscHero | 编写时间 | | 2022/4/3 PM11:54 |
文章类型 | | 系列 | 完成度 | | 已完成 |
座右铭 | 每一个伟大的事业,都有一个微不足道的开始。 |
一、引言&背景 完成度:100%
a) 应对问题&背景
在最近的EPA扫描中,出现了一个安全漏洞:将异常详细信息、堆栈调用暴露到了前端。如图,也是各位.Neter耳熟能详的,司空见惯的一张图。
那么本文也是分享一种简单的设计方式。当然设计方式有很多种,也有很多设计方式思路都差不多,一通百通。博主就当做一个代码包方便日后复用及分享他人。
b) 应用场景
- 在发生异常时,将异常详细信息、堆栈调用暴露到了前端。
- 基于.Net FW MVC技术栈。
c) 分析思路
- 新增一个全局异常处理类CustomGlobalErrorAttribute,继承HandleErrorAttribute全场异常处理类,重写OnException方法。加入跳转到异常通用页等逻辑。
- 在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即可。