2016-06-30 23 views
0

項目負責人希望我爲我們的Web API創建一個自定義異常過濾器來捕獲所有未處理的異常。我在我們的WebApiConfig文件中添加了一個自定義過濾器,並且它正在工作,但並未提供他想要的所有細節。他想用身體此信息返回500錯誤:如何在ExceptionFilterAttribute中返回自定義信息?

{ 
    "code": 500, 
    "message": "My custom message" 
} 

如下圖所示我的處理程序代碼返回一個500錯誤,但身體只顯示

{ 
    "message": "My custom message" 
} 

我怎麼可以自定義此添加即使該信息是多餘的,也是「代碼」號碼?

public class UnhandledExceptionAttribute : ExceptionFilterAttribute 
{ 
    public override void OnException(HttpActionExecutedContext context) 
    { 
     string message = "My custom message"; 
     context.Response = context.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, message); 
    } 
} 

回答

1

只需使用CreateResponse<T>擴展方法:

public class UnhandledExceptionAttribute : ExceptionFilterAttribute 
{ 
    public override void OnException(HttpActionExecutedContext context) 
    { 
     string message = "My custom message"; 
     context.Response = context.Request.CreateResponse(
      HttpStatusCode.InternalServerError, 
      new { 
       code = 500, 
       message = message 
      }); 
    } 
} 
+0

費德里科,完美的作品。我知道必須有一個簡單的答案,但我沒有找到答案。謝謝。 –

相關問題