Есть ли способ уловить все ошибки в веб-служба AJAX?

Я бы хотел перехватить любое необработанное исключение, созданное в ASP. NET, но ничего из того, что я пробовал, пока не работает.

Во-первых, событие HttpApplication.Error не запускается в веб-сервисах, так что это не работает ..

Следующим подходом было реализовать мыло расширение и добавьте его в web.config с помощью:


   

Однако это не сработает, если вы вызовете веб-метод через JSON (что делает исключительно мой веб-сайт).

Моя следующая идея - написать мой собственный HttpHandler для .asmx, который, надеюсь, будет производным от System.Web.Script.Services.ScriptHandlerFactory и сделает что-нибудь умное. Я еще не пробовал.

Есть ли какой-то подход, который мне не хватает? Спасибо!

Майк

ОБНОВЛЕНИЕ:

Я резюмирую возможные решения здесь:

1) Обновление до WCF , что делает все это намного, намного проще.

2) Поскольку вы не можете подклассифицировать или переопределить класс RestHandler, вам придется заново реализовать все это как свой собственный IHttpHandler или использовать отражение для ручного вызова его методов. Поскольку исходный код RestHandler является общедоступным и содержит всего около 500 строк, создание собственной версии может не потребовать огромных усилий, но вы будете нести ответственность за ее поддержку. Мне также неизвестны какие-либо лицензионные ограничения, связанные с этим кодом.

3) Вы можете заключить свои методы в блоки try / catch или, возможно, использовать выражения LAMBDA, чтобы сделать этот код немного чище. Вам все равно потребуется изменить каждый метод в вашем веб-сервисе.

15
задан Mike Christensen 17 November 2011 в 18:20
поделиться