Application.ThreadException на службе WCF? - PullRequest
1 голос
/ 09 марта 2012

Я не могу найти событие Application.ThreadException для прослушивания в моей службе WCF. Я предполагаю, что это для WinForms, так есть ли событие ThreadException для служб WCF? Или они окажутся в AppDomain.CurrentDomain.UnhandledException?

Ответы [ 3 ]

0 голосов
/ 09 марта 2012

Похоже, вам нужно реализовать IErrorHandler: http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx

Затем зарегистрируйте ваш обработчик в ServiceHost: http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.errorhandlers.aspx

Похоже, вы также можете подключить IErrorHandlers с помощью пользовательского атрибута, как описано здесь: http://msdn.microsoft.com/en-us/library/ms751439.aspx

0 голосов
/ 09 марта 2012

Это зависит от вашей клиентской базы. Ошибки WCF генерируются как исключения на стороне клиента, поэтому обрабатывайте их как любой другой глобальный обработчик исключений:

Winforms использует

Application.ThreadException

WPF использует:

Application.DispatcherUnhandledException

Как утверждает Кристиан, это только для исключений, генерируемых в потоке "GUI", но WCF будет перенаправлять обратные вызовы в дуплексном сервисе для них по умолчанию, я думаю.

0 голосов
/ 09 марта 2012

Событие Application.ThreadException используется только для «обработки необработанных исключений, возникающих в потоке Windows Forms » (выделение добавлено, MSDN ), поэтому оно небольшая помощь в службе WCF.

Лучше всего использовать AppDomain.CurrentDomain.UnhandledException.Обратите внимание, что вы не можете предотвратить выход из процесса.Это событие просто позволяет вам сделать некоторую регистрацию или сообщение об ошибке до того, как «системный обработчик по умолчанию сообщит об исключении пользователю и завершит работу приложения».( MSDN ).

Многие также хотят реализовать свой собственный IErrorHandler.Кроме того, ознакомьтесь с этой записью в блоге о некоторых рекомендациях по обработке ошибок WCF, пока вы в этом.

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