AppDomain.CurrentDomain.UnhandledException does not get called

I have a WCF service that has the following code in Global.asax:

protected void Application_Start(object sender, EventArgs e)
{
    // Make sure that any exceptions that we don't handle at least get logged.
    AppDomain.CurrentDomain.UnhandledException += LogUnhandledException;
}

private void LogUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Log.Error.LogException("UnhandledException", e.ExceptionObject as Exception);
}

The idea is to at least log all exceptions that are unhanded.

But it does not seem to ever be called. I tried doing a Divide by Zero in one of my service operations and it just stops the service after it hits the exception.

int zero = 0;
int result = 100 / zero;

The LogUnhandledException method never gets called.

I have tried this in both IIS and running in the debugger.

How can I get this event to work for a WCF service?

Answers


The unhandled exception filter for an app domain is a last-ditch attempt to allow the application to log meaningful information before it is terminated.

This event provides notification of uncaught exceptions. It allows the application to log information about the exception before the system default handler reports the exception to the user and terminates the application.

If WCF allowed an exception thrown by a service to be completely unhandled in this way it would mean that when the service is hosted in IIS the entire worker process would be terminated because a single request raised an exception - not a desirable outcome. As a result WCF doesn't leave exceptions thrown by services unhandled - this event will not be raised in this case.

If you want to log exceptions thrown by WCF services then take a look at the IErrorHandler interface instead.


Need Your Help

create an 7zip archive with sharpcompress

c# 7zip sharpcompress

I need to compress a file as 7zip using SharpCompress: http://sharpcompress.codeplex.com

Twig Slimframework base template data

symfony2 twig slim

so I've been working on a simple website and have a simple question, I guess. I have my base template named template.html and I'm using it on every html page I have. My question is, can a base temp...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.