MVC 01 filterError(异常)

1 mvc 异常 一部分在applicatuon_error中处理,另一部分在HandleErrorAttribute中处理,HandleErrorAttribute‘可以处理以下异常

 

 HandleErrorAttribute:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace filter.Filters
{

    public class CustomHandleErrorAttribute : HandleErrorAttribute
    {

        public override void OnException(ExceptionContext filterContext)
        {
            if (!filterContext.ExceptionHandled) // 异常是否已经被处理.如果未被处理
            {

                if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) // 如果是ajax请求
                {
                    filterContext.Result = new JsonResult()
                    {
                        Data = new { code = -1, message = filterContext.Exception.Message },
                        JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    };
                }
                else//其他
                {

                    //返回一个view 
                    filterContext.Result = new ViewResult()
                    {
                        ViewName = "~/views/shared/Error.cshtml",// 视图路径
                        ViewData = new ViewDataDictionary<string>(filterContext.Exception.Message),
                    };
                }
                filterContext.ExceptionHandled = true;// 异常已经被处理
            }



            //base.OnException(filterContext);
        }
    }
}

 全局注册:

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
           // filters.Add(new HandleErrorAttribute());
            filters.Add(new CustomHandleErrorAttribute()); //全局注册自定义的error,不用每个action都打标签

            
        }

 

Application_Error:

      protected void Application_Error()
        {

            var exception = Server.GetLastError();// 获取最后一个Error
            Response.Write(exception.Message);
            var url = Request.Url.AbsoluteUri;
            Response.Write(HttpContext.Current.Error.Message); // 获取异常信息
      
            Response.Redirect("~/Home/about");// 指定新的url地址
            Server.ClearError();
        }

 

posted @ 2020-06-08 08:23  谁说程序猿很猥琐  阅读(292)  评论(0)    收藏  举报