WebAPI框架里設置異常返回格式統一


直接上代碼

 1     /// <summary>
 2     /// 消息代理處理,用來捕獲這些特殊的異常信息
 3     /// </summary>
 4     public class CustomErrorMessageDelegatingHandler : DelegatingHandler
 5     {
 6         protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
 7         {
 8             return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>((responseToCompleteTask) =>
 9             {
10                 HttpResponseMessage response = responseToCompleteTask.Result;
11                 HttpError error = null;
12                 if (response.TryGetContentValue<HttpError>(out error))
13                 {
14                     //自定義錯誤處理
15                     //error.Message = "這個接口調用出錯了";
16                 }
17                 if (error != null)
18                 {   //這是本人創建的一個返回類                 
19                     var resultMsg = new ResultMsg { StatusCode = (int)StatusCodeEnum.HttpUrlEror, Info =error.MessageDetail  };
20                     return new HttpResponseMessage { Content = new StringContent(resultMsg.ToJson(), 
21                         System.Text.Encoding.GetEncoding("UTF-8"), "application/json"), StatusCode = HttpStatusCode.OK };
22                 }
23                 else
24                 {
25                     return response;
26                 }
27             });
28         }
29     }

然后就是注冊該cs文件,找到Global.asax文件

1         protected void Application_Start()
2         {
3             AreaRegistration.RegisterAllAreas();
4             //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
5             //RouteConfig.RegisterRoutes(RouteTable.Routes);
6             //BundleConfig.RegisterBundles(BundleTable.Bundles);
7             GlobalConfiguration.Configure(WebApiConfig.Register);
8             GlobalConfiguration.Configuration.Filters.Add(new ErrorHandler());
9         }

最后大功告成,效果:

1 {
2   "StatusCode": 404,
3   "Info": "在控制器“StudyTask”上找不到與該請求匹配的操作。",
4   "Data": null
5 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM