zoukankan      html  css  js  c++  java
  • MVC WebAPI框架里设置异常返回格式统一

    webApi里设置全局异常返回格式
    今天为了设置api返回格式统一,在网上找了一推资料,各种资料参差不齐的,最后自己捣鼓,终于弄出来了,直接上代码

    /// <summary>
    
    /// 消息代理处理,用来捕获这些特殊的异常信息
    
    /// </summary>
    
    public class CustomErrorMessageDelegatingHandler : DelegatingHandler
    
    {
    
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    
    {
    
    return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>((responseToCompleteTask) =>
    
    {
    
    HttpResponseMessage response = responseToCompleteTask.Result;
    
    HttpError error = null;
    
    if (response.TryGetContentValue<HttpError>(out error))
    
    {
    
    //自定义错误处理
    
    //error.Message = "这个接口调用出错了";
    
    }
    
    if (error != null)
    
    { //这是本人创建的一个返回类
    
    var resultMsg = new ResultMsg { StatusCode = (int)StatusCodeEnum.HttpUrlEror, Info =error.MessageDetail };
    
    return new HttpResponseMessage { Content = new StringContent(resultMsg.ToJson(),
    
    System.Text.Encoding.GetEncoding("UTF-8"), "application/json"), StatusCode = HttpStatusCode.OK };
    
    }
    
    else
    
    {
    
    return response;
    
    }
    
    });
    
    }
    
    }
    

      

    然后就是注册该cs文件,找到Global.asax文件

    protected void Application_Start()
    
    {
    
    AreaRegistration.RegisterAllAreas();
    
    //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    
    //RouteConfig.RegisterRoutes(RouteTable.Routes);
    
    //BundleConfig.RegisterBundles(BundleTable.Bundles);
    
    GlobalConfiguration.Configure(WebApiConfig.Register);
    
    GlobalConfiguration.Configuration.Filters.Add(new ErrorHandler());
    
    }
    

      

    最后大功告成,效果:

    {
    
    "StatusCode": 404,
    
    "Info": "在控制器“StudyTask”上找不到与该请求匹配的操作。",
    
    "Data": null
    
    }
    

      

  • 相关阅读:
    数据结构实践——败者树归并模拟
    systemctl介绍
    Andriod Atom x86模拟器启动报错。
    (白书训练计划)UVa 11572 Unique Snowflakes(窗体滑动法)
    OpenCV2.3.1在CentOS6.5下的安装
    本学期课程教学要解决这个问题要点备忘录
    firefox浏览器和IE
    [LeetCode] Validate Binary Search Tree
    android性能优化优秀文章
    如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/9371606.html
Copyright © 2011-2022 走看看