.NET [MVC] 利用特性捕捉异常
程序员文章站
2022-08-30 09:23:06
声明:本代码只适用于.NET MVC. 先创建一个类继承ActionFilterAttribute这个抽象类以及实现IExceptionFilter接口,并实现它的方法OnException。 代码如下: 如何使用呢? 只需要在需要捕捉异常的控制器加上[ErrorHandle]即可。 例如: 如果继 ......
声明:本代码只适用于.NET MVC.
先创建一个类继承ActionFilterAttribute这个抽象类以及实现IExceptionFilter接口,并实现它的方法OnException。
代码如下:
using FrameWork.Common; using System.Web; using System.Web.Mvc; namespace FrameWork.Web { public class ErrorHandleAttribute : ActionFilterAttribute, IExceptionFilter { /// <summary> /// 异常 /// </summary> public void OnException(ExceptionContext filterContext) { //获取异常信息,入库保存 var error = filterContext.Exception; var message = error.Message;//错误信息 var url = HttpContext.Current.Request.RawUrl;//错误发生地址 var controllerName = filterContext.RouteData.Values["controller"].ToString(); var actionName = filterContext.RouteData.Values["action"].ToString(); var exception = filterContext.Exception.ToString(); Log4NetHelp.Error("出错位置:" + url, filterContext.Exception); filterContext.HttpContext.Response.Redirect("/Account/Login");//否则跳转至登陆页 } } }
如何使用呢?
只需要在需要捕捉异常的控制器加上[ErrorHandle]即可。
例如:
[ErrorHandle] public abstract class AdminControllerBase : Controller { //代码逻辑 }
如果继承AdminControllerBase或者带有[ErrorHandle]特性的类和方法出现了错误,都会执行OnException方法,
然后写上自己的异常处理逻辑即可。
推荐阅读
-
详解ASP.NET MVC 利用Razor引擎生成静态页
-
.NET MVC全局异常处理(二)
-
ASP.NET MVC4 利用uploadify.js多文件上传
-
Asp.net MVC验证那些事(4)-- 自定义验证特性
-
ASP.NET MVC 利用ActionFilterAttribute来判断用户是否登陆等等
-
HTML5中custom data-*特性与asp.net mvc 3 表单验证
-
asp.net mvc3 利用Ajax实现局部刷新
-
ExceptionLess ASP.NET MVC 异常日志框架
-
ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK
-
[Asp.net MVC]Asp.net MVC5系列——Routing特性