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

  • 相关阅读:
    web 单例 多例
    python socket客户端
    foy: 轻量级的基于 nodejs 的通用 build 工具
    Hydux: 一个 Elm-like 的 全功能的 Redux 替代品
    AlarmManager使用注意事项
    【转】android ListView 几个重要属性
    自己写的小工具软件集合
    win8.1 cygwin编译java轻量虚拟机avian
    android 图片缩放抗锯齿
    windows phone和android,ios的touch事件兼容
  • 原文地址:https://www.cnblogs.com/zhao123/p/9200513.html
Copyright © 2011-2022 走看看