Wie behandele ich unbehandelte Thread-Ausnahmen in ASP.NET?

Wie soll eine ASP.NET-Anwendung mit nicht behandelten Ausnahmen umgehen, die (aufgrund von Fehlern) in einem Nicht-Anforderungs-Hintergrundthread auftreten?

Standardmäßig führen solche Ausnahmen dazu, dass der Prozess abgebrochen wird.Dies ist in der Einstellung eines ASP.NET-Arbeitsprozesses nicht akzeptabel weil gleichzeitig laufende Anfragen unvorhersehbar abgebrochen werden. Es ist auch ein Leistungsproblem.

Ausnahmen in einem Anforderungsthread sind kein Problem, da sie von ASP.NET verarbeitet werden (indem eine Fehlerseite angezeigt wird).

DasAppDomain.UnhandledException Mit event kann beobachtet werden, dass eine Ausnahme aufgetreten ist, die Beendigung kann jedoch zu diesem Zeitpunkt nicht verhindert werden.

Hier ist eine Reproduktion, die in einen ASPX-Seitencode eingefügt werden muss.

protected void Page_Load(object sender, EventArgs e)
{
    var thread = new Thread(() =>
        {
            throw new InvalidOperationException("some failure on a helper thread");
        });
    thread.Start();
    thread.Join();
}

Die einzige mir bekannte Lösung besteht darin, eine Ausnahme niemals unbearbeitet "entkommen" zu lassen. Gibt es dafür eine andere, globalere und gründlichere Lösung?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage