Почему метод global.asax Application_Error не перехватывает исключения, генерируемые службой ASMX? - PullRequest
42 голосов
/ 17 октября 2008

И как это исправить. Я хотел бы регистрировать каждое выброшенное исключение для целей обслуживания.

Ответы [ 4 ]

42 голосов
/ 17 октября 2008

Это известная проблема в .Net - Application_Error никогда не запускается для веб-службы. Не уверен, есть ли какая-то причина, это было бы разработано, но это просто не работает.

Джефф Этвуд написал об этом сообщение продолжение ) об этом несколько лет назад со следующими идеями:

  • Поместите блок try-catch вокруг каждого метода веб-службы
  • Использовать шаблон оформления фасада и включать try-catch в родительские объекты
  • Написать собственное расширение SOAP или HTTPModule

Единственный, о котором я забочусь, - это первый, хотя это кажется большой работой.

16 голосов
/ 17 июля 2009

Лучше: Событие HttpApplication.Error :

Примечание:

Если ваше веб-приложение содержит XML Веб-сервисы, вы не можете использовать ошибку событие для глобальной обработки исключений эти услуги. Обработчик HTTP для Веб-сервисы XML потребляют любые исключение, которое возникает в XML Web сервис и преобразует его в SOAP ошибка до того, как ошибка вызывается. Для обработки исключений веб-службы XML, создать расширение SOAP для обработки Web исключения службы в пользовательском глобальном обработчик исключений. Для большего информация, см. Обработка и бросание Исключения в веб-службах XML .

13 голосов
/ 16 июля 2009

Для тех, кто ищет слова Microsoft по этой теме, см. Здесь: " Обработка и создание исключений в веб-службах XML ".

Это соответствующий раздел:

Веб-приложение может состоять из нескольких веб-служб XML, однако событие Application_Error в файле Global.asax нельзя использовать для глобальной обработки исключений. HttpHandler для веб-служб XML использует любое исключение, которое возникает во время выполнения веб-службы XML, и превращает его в ошибку SOAP до вызова события Application_Error.

0 голосов
/ 10 декабря 2008

Application_error по умолчанию не работает на iis 7.

...