Наши службы WCF иногда создают рабочий поток для обработки чего-то, о чем клиент не заботится. Рабочие потоки не сообщают о каком-либо статусе клиенту. Фактически, служба, вероятно, уже вернула клиенту результаты к моменту завершения потока.
Один из этих фоновых потоков недавно вызвал исключение. Исключение осталось необработанным, поэтому произошел сбой IIS.
Я могу исправить это конкретное исключение, но в будущем кто-то может добавить некоторый код, вызывающий другое неожиданное исключение. Я хочу предотвратить это от сбоя IIS в будущем.
Я знаю, что приложения System.Windows.Forms могут обрабатывать исключения потоков, реализуя Application.ThreadException
. Есть ли что-то подобное, что я могу сделать из службы WCF? Или, если Application.ThreadException
- это путь, как бы я подключил его к службе WCF?
В документации MSDN для AppDomain.UnhandledException
сказано, что это не предотвращает сбои. Документы для ServiceModel.AsynchronousThreadExceptionHandler
предполагают, что это только для потоков WCF.
Как минимум, я хотел бы получить трассировку стека из исключения перед сбоем, но во избежание будущих сбоев было бы идеально.
Опять же, позвольте мне подчеркнуть, что это не исключение, которое я хочу вернуть как ошибку WCF клиенту.