閱文時長 | 0.54分鐘 字數統計 | 876字元 主要內容 | 1、引言&背景 2、部分通用設計代碼 3、聲明與參考資料 『.Net MVC實現全局異常捕捉返回通用異常頁面的一種方式』 編寫人 | SCscHero 編寫時間 | 2022/4/3 PM11:54 文章類型 | 系列 完成度 | ...
閱文時長 | | 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即可。