Каков надлежащий способ реализации глобального обработчика захвата исключений в реализации Katana (OWIN)?
В самообслуживаемой реализации OWIN/Katana, выполняемой как Azure Cloud Service (рабочая роль), я поместил этот код в Middleware:
throw new Exception("pooo");
Затем я поместил этот код в метод конфигурации класса запуска, установив точку останова в обработчике событий:
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
Я также попытался переместить проводку и обработчик в метод Onerart рабочей роли, но все же точка останова не попала.
Я вообще не использую WebAPI, но смотрел сообщения о том, что там сделано, но я не нашел ничего понятного, так что я здесь.
Работает на .NET Framework 4.5.2, VS 2013.
Все идеи оценены. Спасибо.