ASP.NET Web Api中的异常处理2

Kia*_*Rad 7 c# asp.net exception-handling asp.net-web-api asp.net-web-api2

问题:

我需要处理web api 2异常并返回具有正确状态代码的富对象(401为Unauthorized,404为ContentNotFound等)和一些额外信息作为内容.此外,我所需要的内容,看起来像一个序列化Exception对象(有message,exceptionMessage,stackTrace,...性质).

建议的解决方案:

  1. 创建自定义异常类并编写自定义异常过滤器以应用于任何控制器的操作.这个自定义异常过滤器根据它的类型(我已经定义的一个自定义异常)处理抛出的异常,并通过类似的方式响应(过滤器的代码):

    context.Response = context.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                        new Exception("my exception")));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 包装已经编写的web api 2 *ActionResult类(System.Web.Http.Results.UnauthorizedResult Unauthorized(),System.Web.Http.Results.OkResult Ok()等)并向它们添加一些自定义数据并使用它们,以便每次调用它们时将结果传递给客户端(问题是在这种情况下我的控制器的操作的返回类型应该是IHttpActionResult这是不一样容易测试和可读作为强类型动作).

我应该选择什么解决方案?或者还有其他方法可以做我想在这里实现的目标吗?

Mat*_*zer 8

或者您可以使用内置的,开箱即用的解决方案:异常过滤器.

此外,您可能对从Web API 2.x开始的异常处理感兴趣.