ich einen WCF-Dienst, die den folgenden Code in Global.asax hat:AppDomain.CurrentDomain.UnhandledException wird nicht genannt
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);
}
Die Idee ist, zumindest auf alle Ausnahmen protokollieren, die unhanded werden.
Aber es scheint nie zu heißen. Ich habe versucht, eine Divide by Zero in einem meiner Service-Operationen zu machen, und es stoppt nur den Service, nachdem es die Ausnahme erreicht hat.
int zero = 0;
int result = 100/zero;
Die LogUnhandledException-Methode wird nie aufgerufen.
Ich habe dies sowohl in IIS versucht und im Debugger ausgeführt.
Wie kann ich dieses Ereignis für einen WCF-Dienst verwenden?
Ich frage mich, ob es etwas mit IIS zu tun hat oder wie der WCF-Dienst gehostet wird. Wie [hier] (http://mlichtenberg.wordpress.com/2011/09/19/catching-unhandled-exceptions-in-asp-net/), sagt die Jungs: * Zusammenfassend, nicht behandelte Ausnahmen in einem ASP.NET Anwendung kann mit einem Ereignishandler Application_Error in der Datei global.asax abgefangen werden, oder indem ein HttpModule erstellt wird, um das Ereignis AppDomain.UnhandledException abzufangen. * – oleksii