2014-07-25 68 views
1

WebApiConfig.cs如何在HTTP返回定製的Json 404個的ASP.NET Web API

public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "search/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     //JSON RESPONSE SETTING 
     config.Formatters.Clear(); 
     config.Formatters.Add(new System.Net.Http.Formatting.JsonMediaTypeFormatter()); 
     config.EnableSystemDiagnosticsTracing(); 
    } 

ReplyController.cs

public class ReplyController: ApiController 
{ 

    [HttpGet] 
    public HttpResponseMessage getReply() 
    {...} 
} 

,我下面寫的JSON返回的自定義錯誤代碼:

401 Bad Request - {meta:{code:401, msg='invalid params'}} 

我想爲404 http狀態編寫json返回碼。

我在哪寫?控制器類? webconfig.cs? Global.asax中?

回答

1

所以,你必須在哪裏寫代碼的幾個選項:

  1. 您可以添加一個全球性的過濾器,處理的OnError條件,然後有一個過濾器返回回到正確的JSON響應。有幾個不同的例子,如果你谷歌周圍。

  2. 我想做什麼,是有一個自定義BaseApiController類,它具有一個ExecuteRequest方法,它採用一個lambda委託作爲它的參數,然後ExecuteRequest方法體內之前我所說的,我可以做我的所有設置我打電話給委託後委託人和我的拆卸和錯誤處理。我以這種方式使用SimpleInjector作爲我的DI框架,並且讓自定義過濾器獲得DI注入非常痛苦,並且按照我希望的順序運行。

讓我知道,如果這是有道理的,但我認爲這將很好地幫助你在這裏,B/C,那麼你可以只處理在一個try/catch和好到哪裏去。