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