2014-07-25 61 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和好到哪里去。