Захватывать все необработанные исключения автоматически с помощью WebService - PullRequest
5 голосов
/ 06 мая 2009

У меня есть приложение C # WebService, в котором я хочу перехватить все необработанные исключения, выброшенные из приложения.

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 06 мая 2009

По какой-то причине событие Application_Error не запускается для веб-служб (см. другой вопрос ). Сам мистер Джефф Этвуд опубликовал несколько советов в блоге ужасов кодирования .

Он пишет:

* Поместите try..catch вокруг каждого метода WebService. Эти методы, как правило, являются обертками для других классов, так что это не так плохо, как кажется, но все равно не хорошо.
* использовать шаблон проектирования Facade для извлечения всех объектов из родительских объектов, которые .. обычно делают попытку .. поймать метод .Execute. Спасибо, но нет, спасибо.
* Написать собственное расширение SOAP или HttpModule. Это звучит разумно, но .. сложно. Если это такое классное, важное расширение или HttpModule, кто-нибудь уже написал бы его?
1 голос
/ 06 мая 2009

Один из способов - подписаться на событие AppDomain.UnhandledException где-нибудь в обработчике App_Start.

0 голосов
/ 12 мая 2010

Возможно, работа для аспектно-ориентированного подхода. Некоторые примеры;

PostSharp

Spring.Net

...