Как лечить необработанные исключения потоков в ASP.NET?

How is an ASP.NET application supposed to deal with unhandled exceptions which are occuring on a non-request background thread (due to bugs)?

По умолчанию такие исключения приводят к завершению процесса.This is unacceptable in the setting of an ASP.NET worker process потому что одновременно выполняющиеся запросы прерываются непредсказуемо. Это также проблема производительности.

Исключения в потоке запросов не являются проблемой, поскольку ASP.NET обрабатывает их (показывая страницу с ошибкой).

AppDomain.UnhandledException событие позволяет наблюдать, что произошла исключительная ситуация, но в этой точке нельзя предотвратить завершение.

Вот репродукция, которую нужно вставить в кодовую страницу ASPX.

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();
}

Единственное известное мне решение состоит в том, чтобы никогда не позволять исключению & quot; бежать & quot; необработанный. Есть ли другое, более глобальное и основательное решение для этого?

Ответы на вопрос(3)

Ваш ответ на вопрос