Web API 2返回自定义成功/错误对象

时间:2017-01-25 15:43:14

标签: asp.net-web-api custom-error-handling

我的Web API 2项目存在一些问题。

为了连接到移动应用客户端,我需要以这种方式提供自定义成功/错误对象:

产品(GET)

  • on Success 200:返回一个包含(ID,Name)
  • 的列表
  • on Error:返回带有(ErrorCode,ErrorDescription)的自定义对象

我怎样才能以一种好的方式做到这一点? 使用 JsonResult 还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

我会这样做:

public class CustomErrorObject
{
   public string ErrorCode { get; set; }
   public string ErrorDescription { get; set; }
}

public class HandleApiExceptionAttribute : ExceptionFilterAttribute
{
    public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
    {
        base.OnException(actionExecutedContext);

        HttpRequestMessage request = actionExecutedContext.ActionContext.Request;
        CustomErrorObject response = new CustomErrorObject();
        response.ErrorCode = actionExecutedContext.Exception.Data("Text");
        response.ErrorDescription = actionExecutedContext.Exception.Data("Detail");

        actionExecutedContext.Response = request.CreateResponse(HttpStatusCode.BadRequest, response);
    }
}

然后在Global.asax中将此行添加到Application_Start事件:

GlobalConfiguration.Configuration.Filters.Add(new HandleApiExceptionAttribute())

如果您想了解有关Web API中异常处理的更多信息:enter image description here