在GET请求异常过滤器上返回对象

艾米·德斯潘德(Amey Deshpande)

我正在尝试通过ASP.NET WEb API调用返回带有json数据的对象。
我想以表格形式返回数据IHttpActionResult

{
  "message": "success",
  "statuscode": "SuccessCode",
  "statusmessage": "SuccessMsg",
  "data": [
    {
      "corrBD1": null,
      "flagType1": null,
      "status1": null,
      "mstrRep1": null,
      "repname1": null,
      "nameAccount1": null,
      "acDate1": "0001-01-01T00:00:00",
      "preAddress1": null,
      "currAddress1": null
    }]
}

我可以通过有效的GET请求返回以下数据:

return OK(employee);

但是当发生异常时,我需要以相同的形式返回数据

    {
  "message": "fail",
  "statuscode": "400",
  "statusmessage": "failmsg",
  "data": null
}

但是异常过滤器迫使我以HttpResponseMessage(不幸的是无法以所需的形式返回)的形式发送响应,该如何完成呢?

杰里米·利克尼斯(Jeremy Likness)

如果我对问题的理解正确,那么无论您是在控制器中还是在异常过滤器中处理响应,您都只是在尝试在结果中使用一致的消息语法。您应该可以通过创建自己的IHttpActionResult来执行所需的操作:

private class MyResult : IHttpActionResult
    {
        public HttpRequestMessage Request { get; set; }

        public string Content { get; set; }

        public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
        {
            HttpResponseMessage response = 
               new HttpResponseMessage(HttpStatusCode.InternalServerError); // or whatever
            response.Content = new StringContent(Content); // your content here
            response.RequestMessage = Request;
            return Task.FromResult(response);
        }
    }

在处理程序中,您只需设置ExceptionHandlerContext.Request为上面创建的实例即可。这对您的情况有用吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章