【发布时间】:2013-04-08 09:04:55
【问题描述】:
如何捕获 所有 发生在 ASP.NET Web Api 中的未处理异常以便记录它们?
到目前为止我已经尝试过:
- 创建并注册
ExceptionHandlingAttribute - 在
Global.asax.cs中实现Application_Error方法 - 订阅
AppDomain.CurrentDomain.UnhandledException - 订阅
TaskScheduler.UnobservedTaskException
ExceptionHandlingAttribute 成功处理了控制器动作方法和动作过滤器中抛出的异常,但没有处理其他异常,例如:
- 操作方法返回的
IQueryable执行失败时引发的异常 - 消息处理程序抛出的异常(即
HttpConfiguration.MessageHandlers) - 创建控制器实例时抛出异常
基本上,如果异常会导致 500 Internal Server Error 返回给客户端,我希望它被记录下来。实现 Application_Error 在 Web 表单和 MVC 中做得很好 - 我可以在 Web Api 中使用什么?
【问题讨论】:
-
您是否尝试过使用ASP.NET Health Monitoring?只需启用它并查看您的异常是否未记录到事件日志中。
-
健康监控捕获我的 MVC 管道异常,但没有捕获我的 Web Api 管道异常。
-
谢谢 - 我花了一段时间才弄清楚为什么我无法记录我的构造函数/依赖注入问题,我以为我已经对 WebAPI 日志进行了排序......
标签: c# asp.net-web-api unhandled-exception