【发布时间】:2015-05-04 08:15:40
【问题描述】:
我正在使用 WebAPI v2.2,并且我正在让 WebAPI 使用 [FromBody] 属性将 JSON 反序列化到一个对象上。反序列化的目标类在内部方法上有一个 [OnDeserialized] 属性,如下所示:
[OnDeserialized]
internal void OnDeserialisedMethod(StreamingContext context) {
// my method code
}
我知道这个方法中的代码有问题,我已经通过它找到了它。对我来说,问题是我一点也不例外。发生的情况是这个方法被跳出并且异常似乎被忽略了。我的控制器动作被调用并且我的目标对象没有被正确填充,因为这个序列化方法没有被正确执行。
我的问题是;如何在 WebAPI 中捕获反序列化期间发生的异常?
【问题讨论】:
-
我已按照该网页上的建议进行操作,但仍然没有发现异常?从 ExceptionHandler 类派生并注册到
config.Services.Replace(typeof(IExceptionHandler), new Exceptions.MyExceptionHandler()); -
他们确实捕获了异常,但不是我想要的异常。它捕获了我的目标类没有正确填充的异常,它仍然没有看到 OnDeserialized 方法的任何异常。我需要在它进入控制器操作方法之前捕获错误,这似乎是这里的一个问题,它们似乎只是被忽略了。
-
对不起,这是我的错。它是用于响应序列化而不是用于请求反序列化。
-
没问题,我已将标题更新为声明请求反序列化,因为我认为这样会更清楚。
标签: c# json asp.net-web-api deserialization