c# - 反序列化来自 Web Api 的自定义异常

标签 c# asp.net-web-api

我通过 HttpResponseException 从 WebApi 返回自定义异常。例如:

//Base class for all custom app exceptions
public class MyAppException : Exception {}

//Custom exceptions
public class MyCustomException1 : MyAppException { //custom properties}
public class MyCustomException2 : MyAppException { //other custom properties}

客户端是一个 HttpClient,返回的消息看起来像这样:

{"Message":"An error has occurred.","ExceptionMessage":"Exception of type 'MyApp.Exceptions.MyCustomException1 ' was thrown.","ExceptionType":"MyApp.Exceptions.MyCustomException1 ","StackTrace":null}

这里有两个问题:

  1. 自定义异常的属性不在消息中
  2. 响应消息不能反序列化为自定义异常

有没有办法将消息反序列化为正确的异常?

最佳答案

使用Custom model binder 分析ExceptionType 属性来创建正确异常的实例。 请看看这个工作Github sample

已编辑

关于c# - 反序列化来自 Web Api 的自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731873/

相关文章:

c# - 即使在同一方法调用上验证 Times.Once() 和 Times.Never() 时,Moq 测试也会通过

c# - 从传统的 ASP 迁移。 NET MVC 到 WebApi + knockout

asp.net - 我应该如何将多个参数传递给 ASP.Net Web API GET?

c# - C# 不支持可选/默认参数的原因是什么?

c# - 适用于 Mac 的 Visual Studio : How to run tests with x64

c# - Amazon EC2 开发堆栈

asp.net - 带有 OWIN 自托管的 Web API 无类型 OData 服务返回 406 Not Acceptable

c# - 无法识别 Web API 路由

encryption - jwt Web token 应该加密吗?

c# - 将 Access 报告导出为 PDF