如何在Web API中捕获SerializationException?

Mik*_*ike 10 asp.net serialization exception-handling asp.net-web-api

我有一个ASP.NET Web API Web服务,在某些情况下会抛出SerializationException.问题是我无法捕获并记录服务器端的这个异常 - 它显示的唯一地方是在客户端的HTTP响应正文中.

在ASP.NET Web APIExceptionFilterAttribute中的异常处理中注册了一个,并在我在控制器中抛出异常时验证它是否正常工作.不幸的是,在响应期间(控制器之后)抛出了SerializationException,并且似乎被ASP.NET完全吞没了.我也试过Application_Error()在Global.asax.cs中挂钩,但它也没有出现在那里.

如何在Web API响应期间捕获SerializationException异常?

Dar*_*ler 9

如果您使用该ApiController.CreateResponse()方法并返回a 而不是返回一个对象,那么HttpResponseMessage您可以执行此操作response.Content.LoadIntoBufferAsync().Wait(),这将强制序列化在您仍在操作中时发生,因此可以捕获异常.