MVC Filter自定义异常(拦截)

本文介绍了一个自定义异常处理属性CustomExceptionAttribute的实现方法,该属性用于ASP.NET MVC应用程序中捕获并处理运行时异常,包括特定HTTP错误码的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 // -----------------------------------------------------------------------
 2 //  <copyright file="CustomExceptionAttribute.cs" company="技术支持——谭明超">
 3 //      Copyright (c) 2016 QS.Web.Extensions. All rights reserved.
 4 //  </copyright>
 5 //  <last-editor>谭明超</last-editor>
 6 //  <last-date>2016/8/2 20:56:16</last-date>
 7 // -----------------------------------------------------------------------
 8 
 9 using System;
10 using System.Web;
11 using System.Web.Mvc;
12 
13 namespace QS.Web.Extensions
14 {
15     public class CustomExceptionAttribute : FilterAttribute, IExceptionFilter
16     {
17         public void OnException(ExceptionContext filterContext)
18         {
19             Exception exception = filterContext.Exception;
20             if (filterContext.ExceptionHandled == true)
21             {
22                 return;
23             }
24             HttpException httpException = new HttpException(null, exception);
25             //filterContext.Exception.Message可获取错误信息
26 
27             /*
28              * 1、根据对应的HTTP错误码跳转到错误页面
29              * 2、这里对HTTP 404/400错误进行捕捉和处理
30              * 3、其他错误默认为HTTP 500服务器错误
31              */
32             if (httpException != null && (httpException.GetHttpCode() == 400 || httpException.GetHttpCode() == 404))
33             {
34                 filterContext.HttpContext.Response.StatusCode = 404;
35                 filterContext.HttpContext.Response.Write("错误的请求路径");
36                 filterContext.HttpContext.Response.WriteFile("~/HttpError/404.html");
37             }
38             else
39             {
40                 filterContext.HttpContext.Response.StatusCode = 500;
41                 filterContext.HttpContext.Response.Write("服务器内部错误");
42                 filterContext.HttpContext.Response.WriteFile("~/HttpError/500.html");
43             }
44             /*---------------------------------------------------------
45              * 这里可进行相关自定义业务处理,比如日志记录等
46              ---------------------------------------------------------*/
47 
48             //设置异常已经处理,否则会被其他异常过滤器覆盖
49             filterContext.ExceptionHandled = true;
50 
51             //在派生类中重写时,获取或设置一个值,该值指定是否禁用IIS自定义错误。
52             filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
53         }
54     }
55 }
View Code

该源码源自网上,,,,不记得哪里的了

转载于:https://www.cnblogs.com/Tmc-Blog/p/5737886.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值