Problem:
我需要处理 Web api 2 异常并返回一个具有正确状态代码的丰富对象(401 表示未经授权,404 表示 ContentNotFound 等)以及一些额外信息作为内容。此外,我需要内容看起来像序列化的Exception
对象(有message
, exceptionMessage
, stackTrace
, ... 特性)。
建议的解决方案:
-
创建自定义异常类并编写自定义异常过滤器以应用于任何控制器的操作。此自定义异常过滤器根据其类型(我已经定义的自定义异常之一)处理抛出的异常,并通过类似以下内容(过滤器的代码)进行相应响应:
context.Response = context.Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
new Exception("my exception")));
包装已经写好的Web api 2*ActionResult
类(System.Web.Http.Results.UnauthorizedResult Unauthorized()
, System.Web.Http.Results.OkResult Ok()
等)并向它们添加一些自定义数据并使用它们,以便每次调用它们时它们的结果都会传递给客户端(问题是在这种情况下我的控制器操作的返回类型应该是IHttpActionResult
这不像强类型操作那样容易测试和可读)。
我应该选择什么解决方案?或者还有其他方法可以实现我在这里想要实现的目标吗?
或者您可以使用内置的、开箱即用的解决方案:异常过滤器 http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling.
此外,您可能感兴趣从 Web API 2.x 开始的异常处理 http://www.asp.net/web-api/overview/web-api-routing-and-actions/web-api-global-error-handling.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)