• 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用错了,在配置中修改为

  • 相关阅读:
    Numpy
    Homer SIP capture and VoIP Monitoring Install Guide
    How to install FreeSWITCH in Centos 7
    Media Samples
    lavfi
    Jitsi Sip Communicator Source Code Build Guide for Windows
    How to install Asterisk 13 with WebRTC support in CentOS
    How to build PJSIP with WebRTC
    WebRTC & SIP: The Demo
    WebRTC tutorial using SIPML5
  • 原文地址:https://www.cnblogs.com/zhao123/p/9200513.html
Copyright © 2020-2023  润新知