在ASP.NET Web API 2中我理解有几种不同的方法来捕获未处理的异常,但我显然错过了一个,因为我看到的错误是我在本地运行时出现在输出日志中的错误我没有被任何异常处理程序捕获。
背景:
我收到以下错误:
类型' System.InvalidOperationException'的例外情况发生在mscorlib.dll中但未在用户代码中处理
错误源自我.Dispose()
实施的IDependencyResolver
方法。错误在整个操作过程中随机抛出,而不是在启动时抛出。
在WebApiConfig
:
config.DependencyResolver = new MyResolver(); // MyResolver.Dispose() randomly throws the error
现在,我还注册了自定义IExceptionLogger
和自定义IExceptionHandler
:
config.Services.Add(typeof(IExceptionLogger), new MyExceptionLogger());
config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler())
分别从ExceptionLogger
和ExceptionHandler
继承。它们会覆盖Log
和Handle
方法(分别再次),并且这些方法都没有捕获抛出的异常。
我还在Application_Error(object sender, EventArgs args)
注册了一个global.asax.cs
,但也没有发现异常。
我还缺少异常监听器吗?我想在解决方案上尽可能充分地报道,所以我不会错过任何例外,我至少可以记录它们。