博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC异常过滤器 (错误页)
阅读量:5864 次
发布时间:2019-06-19

本文共 1910 字,大约阅读时间需要 6 分钟。

控制器

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MVC过滤器.Controllers{    public class HomeController : Controller    {        //        // GET: /Home/        public ActionResult Index(string id, string name)        {            int a = 1;            int b = 0;            int c = a / b; //这里人为的搞一个错误。            return View();        }        public ActionResult Error()        {            return View();        }    }}

Home控制器下的的Error视图

@{    Layout = null;}@model HandleErrorInfo  @*这个HandleErrorInfo实体类里面就是当前最后一次错误的具体信息*@    
Error
@Model.ActionName; @Model.ControllerName; @Model.Exception.Message;

在项目下建一个Filters的目录,用来放过滤器。

在Filters目录以下新建一个ExceptionAttribute.cs异常过滤器类。让它继承HandleErrorAttribute类

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MVC过滤器.Filters{    public class ExceptionAttribute:HandleErrorAttribute    {               public override void OnException(ExceptionContext filterContext)        {            //获取抛出异常的对象            Exception ex = filterContext.Exception;                       //写日记             System.IO.File.AppendAllText(filterContext.HttpContext.Server.MapPath("/Logs/Log.txt"), ex.ToString());            //假设这里设为false。就表示告诉MVC框架,我没有处理这个错误。

然后让它跳转到自定义的错误页(设为true的话。就表示告诉MVC框架。异常我已经处理了。不须要在跳转到错误页了,也部会抛出黄页了) filterContext.ExceptionHandled = false; } } }

去到APP_Start目录下的FilterConfig.cs类中,去将自定义的ExceptionAttribute异常过滤器注冊为全局过滤器

using MVC过滤器.Filters;using System.Web;using System.Web.Mvc;namespace MVC过滤器{    public class FilterConfig    {        public static void RegisterGlobalFilters(GlobalFilterCollection filters)        {            filters.Add(new HandleErrorAttribute());            //将自定义的异常过滤器注冊为全局过滤器。(全局过滤器是能够注冊多个的)            filters.Add(new ExceptionAttribute());        }    }}

你可能感兴趣的文章
Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)...
查看>>
Duplicate Symbol链接错误的原因总结和解决方法[转]
查看>>
适配器模式
查看>>
刨根问底区块链 —— 基础篇
查看>>
php 直接调用svn命令
查看>>
建立低权限的ftp帐号
查看>>
htpasswd
查看>>
Android窗口机制(三)Window和WindowManager的创建与Activity
查看>>
Android 编译出错解决
查看>>
iOS--The request was denied by service delegate (SBMainWorkspace) for reason:
查看>>
Android 打开WIFI并快速获取WIFI的信息
查看>>
Spring boot 入门篇
查看>>
【IOS开发】GDataXML解析XML
查看>>
Iptables
查看>>
我的友情链接
查看>>
GridView多行多列合并单元格(指定列合并)
查看>>
什么是DDOS攻击?怎么防御?
查看>>
状态模式(State Pattern)
查看>>
log4j日志框架学习
查看>>
function 与 => 的区别
查看>>