asp.net web api -当WebApi序列化失败时,我希望异常弹出,而不是null我的参数



我有一些自定义转换器已经添加到我的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;

最新更新