AppDomain.CurrentDomain.UnhandledException does not get called

.net, asp.net, c#, iis, wcf

Solution

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.

Problem

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?

Original source