OWIN / Katana的未处理异常全局处理程序?

7 浏览
0 Comments

OWIN / Katana的未处理异常全局处理程序?

在Katana(OWIN)实现中,如何正确实施全局异常捕获处理程序?

在作为Azure云服务(工作角色)运行的自托管OWIN/Katana实现中,我将以下代码放在中间件中:

throw new Exception("pooo");

然后,我将以下代码放在Startup类的Configuration方法中,并在事件处理程序中设置了断点:

 AppDomain.CurrentDomain.UnhandledException += 
    CurrentDomain_UnhandledExceptionEventHandler;

以及在同一类中的事件处理程序(在第一行设置了断点):

private static void CurrentDomain_UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)
{
    var exception = (Exception)e.ExceptionObject;
    Trace.WriteLine(exception.Message);
    Trace.WriteLine(exception.StackTrace);
    Trace.WriteLine(exception.InnerException.Message);
}

当代码运行时,断点没有被触发。但是,Visual Studio输出窗口确实包含以下内容:

A first chance exception of type 'System.Exception' occurred in redacted.dll
A first chance exception of type 'System.Exception' occurred in mscorlib.dll

我还尝试将事件绑定和处理程序移动到Worker Role OnStart方法,但断点仍未被触发。

我完全没有使用WebAPI,但是查看了一些相关帖子,但没有找到明确的解决方法,所以我在这里求助。

运行在.NET Framework 4.5.2和VS 2013上。

感谢任何想法。

0