MVC WebAPI框架裡設定異常返回格式統一
阿新 • • 發佈:2019-01-07
webApi裡設定全域性異常返回格式
今天為了設定api返回格式統一,在網上找了一推資料,各種資料參差不齊的,最後自己搗鼓,終於弄出來了,直接上程式碼
然後就是註冊該cs檔案,找到Global.asax檔案/// <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; } }); } }
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
}
最後,本人技術菜鳥,有好的建議希望分享,謝謝