【发布时间】:2019-06-30 15:43:42
【问题描述】:
我正在使用 dotnet core 2.2 开发一个 web api,我们想要捕获序列化异常并返回 400 badRequest 以区分验证错误 422UnprocessableEntity。我们试图创建一个异常处理程序
public void JsonSerializerExceptionHandler(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
{
args.ErrorContext.Handled = true;
var errorContext = args.ErrorContext;
if (errorContext == null)
{
return;
}
var error = errorContext.Error;
throw new SerializationException(error.Message, error.InnerException);
}
但是当它抛出它时会抛出另一个 InvalidOperationException 类型的异常,并带有消息
当前错误上下文错误与请求错误不同。
我们尝试了不同的方法,但找不到解决方案。有人可以帮忙吗?
【问题讨论】:
-
我不确定您为什么要尝试实现这一目标。我只是将我的序列化代码包装在一个 try catch 中,如果您正在寻找序列化错误,只需为此添加一个特定的 catch 块。您可以编写一个专门在 MVC 层中的任何位置捕获这些的中间件。
-
我们正在尝试实现这一点,因为它是来自客户端的请求,Json.net 本身不会抛出异常,如果我删除最后一行它根本不会抛出。
标签: asp.net-core json.net asp.net-core-webapi asp.net-core-2.2