Почему мое событие AppDomain.CurrentDomain.UnhandledException не всегда срабатывает? - PullRequest
1 голос
/ 18 февраля 2011

У меня есть программа Windows Service, работающая в режиме выпуска, которая работает 24/7, что делает некоторые внутрипроцессные вызовы COM в библиотеку C ++, и иногда происходит сбой, но вызов журнала log4net в AppDomain.CurrentDomain.UnhandledException событие не запускается.

Вместо этого процесс просто завершается, и записывается сообщение журнала EventLog ... но опять же странно то, что мой код не имеет вызовов EventLog.WriteEntry.

Может ли кто-нибудь помочь мне понять, почему AppDomain.CurrentDomain.UnhandledException срабатывает не во всех случаях?

Заранее спасибо

Сообщение журнала событий:

EventTypeclr20r3, P1 ProgramName.exe, P2 0.0.0.0, P3 4d5bd49f, P4 mscorlib, P5 2.0.0.0, P6 4a7cd8f7, P7 41b3, P8 a3, P9 system.argumentoutforrange, P10 NIL.

1 Ответ

1 голос
/ 18 февраля 2011

Запись в журнале событий написана Windows и сообщает вам, что что-то выбрасывает ArgumentOutOfRangeException .Не видя код, содержащийся в вашем обработчике событий для AppDomain.CurrentDomain.UnhandledException, трудно сказать почему , но вполне вероятно, что происходит одно из следующих действий:

  • Ваш обработчик исключенийвыбрасывание ArgumentOutOfRangeException
  • У вас есть несколько доменов приложений в вашем процессе, и он один из других выбрасывает аргумент вне диапазона исключений.

Первый вариант более вероятен.Внимательно просмотрите код в вашем обработчике исключений и найдите место, где может быть передан неверный аргумент.Вы можете попробовать обернуть весь обработчик исключений в try `catch`, который регистрирует любое исключение, которое происходит в вашего обработчика исключений, в журнал событий и посмотреть, получит ли это какую-либо дополнительную информацию, такую ​​как стекслед.

Кроме того, убедитесь, что вы развертываете символы отладки (.pdb файлы) вместе с вашим приложением, так что любые трассировки стека, которые регистрируются, дают вам номера строк для обращения к ним.

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