我有一些自定义转换器已经添加到我的WebApi项目的SerializationSettings中。当我在其中一个转换器中抛出异常时,我仍然会得到对Action的调用。根据哪个转换器失败,正文参数可以为空或设置默认值。我错过了什么,可以导致webapi抛出错误,所以我可以处理它在一个更全局的水平?
webapi版本:4.0.30506我有同样的问题(但有一个工作围绕它)。你可以在http上下文中放置一个标志,稍后在web api中访问它并在那里处理它。您不能从自定义序列化器抛出异常并在web api中捕获它。它只是忽略异常,并强制执行到ReadJson函数的末尾,如果你试图越过这个。
可以用于HTTP上下文HttpContext.Current。Items["Error Info"] = "Some Error Info"
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer){
...
throw new Exception();
...
///comes here to the end directly
}
如果你正在使用自己的web api,那么HttpContext。Current为空。你可以使用这个包——OwinRequestScopeContext,它允许你使用上下文,这也是每个请求。
在JsonConverter中设置错误:
OwinRequestScopeContext.Current.Items["error"] = exception;
然后在控制器中得到错误:
var ex = OwinRequestScopeContext.Current.Items["error"] as Exception;