Как разрешить IErrorHandlers обрабатывать исключения AccessViolationException в WCF? - PullRequest
2 голосов
/ 07 ноября 2011

Конечно, мы должны избегать перехвата и попыток обработки исключений AccessViolationException (AVE). Однако в моем текущем случае исключение выдается из управляемого компонента COM +, который завершает процесс, вызвавший исключение, и, следовательно, корректно очищается. Однако служба Windows, на которой размещается WCF, которая использует указанный компонент COM +, получает всплывающее AVE, вызывающее сбой службы.

Установленные IErrorHandlers, похоже, не запускают и не обнаруживают AVE.

Есть ли способ включить WCr IErrorHandlers для перехвата AVE?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

В качестве варианта вы можете попытаться добавить обработчик в AppDomain.CurrentDomain.UnhandledException , где вы можете перезапустить сервис снова.

Или вы можете запустить свой главный win_service в одном'Main') AppDomain и размещение службы WCF в другом («Sub») AppDomain.Таким образом, вы можете выгружать (перезагружать) подпроцесс, не затрагивая основной процесс.

0 голосов
/ 03 декабря 2011

IErrorHandlers не может перехватывать исключения, подобные AccessViolationExceptions (SEHExceptions).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...