zoukankan      html  css  js  c++  java
  • MVC与WebApi中的异常统一处理

    1.简单例子

    /// <summary>
    /// 全局页面控制器异常记录 MVC的异常处理
    /// </summary>
    public class CustomErrorAttribute : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
    
            //设置为true阻止golbal里面的错误执行
            filterContext.ExceptionHandled = true;
            filterContext.Result = new ViewResult() { ViewName = "/Views/Error.cshtml", ViewData = new ViewDataDictionary<string>("HandleErrorAttribute错误信息") };
    
        }
    }
    
    /// <summary>
    /// 全局API异常记录 api的异常处理
    /// </summary>
    public class ApiHandleErrorAttribute : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext filterContext)
        {
            base.OnException(filterContext);
    
            filterContext.Response = new HttpResponseMessage() { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent("ExceptionFilterAttribute测试错误信息") };
        }
    }

    2. Global中添加

    ```C#
    //注册全局的自定义MVC异常过滤器
    GlobalFilters.Filters.Add(new CustomErrorAttribute());
    //注册api的异常
    GlobalConfiguration.Configuration.Filters.Add(new ApiHandleErrorAttribute());

    或者
    在FilterConfig中添加

    filters.Add(new CustomErrorAttribute());

    在WebApiConfig中添加

    config.Filters.Add(new ApiHandleErrorAttribute());

    异常的处理

    以上的异常处理,如果不需要作为特性使用直接实现IExceptionFilter接口即可,引用的时候注意命名空间的区别。

    HandleErrorAttribute与ExceptionFilterAttribute的比较

    1. HandleErrorAttribute在System.Web.Mvc下,主要用于Controller的异常处理,
    ExceptionFilterAttribute在System.Web.Http.Filters下,主要用于api的异常处理

    给定的筛选器实例必须实现以下一个或多个筛选器接口

    出现这样的错误,主要是ExceptionFilterAttribute用错了,在配置中修改为

  • 相关阅读:
    对图像边缘进行随机均匀采样的C#算法实现
    [淡藤]最近几年在Chinapub上买的书
    重新认识C#: 玩转指针
    又是一年春来到
    需求定律在起着作用
    haha, 愚人节听鱼人歌
    名字就叫奥格工作室!
    effective c++ 第六章
    com 名字对象(1)IBindCtx
    com 名字对象(2)创建名字对象(IMoniker)
  • 原文地址:https://www.cnblogs.com/zhao123/p/9200513.html
Copyright © 2011-2022 走看看