Подтвердить что ты не робот

Почему метод global.asax Application_Error не использует исключения, предоставленные службой ASMX?

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

4b9b3361

Ответ 1

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

У Джеффа Этвуда был postfollow-up) об этом несколько лет назад, со следующими идеями:

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

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

Ответ 2

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

Примечание:

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

Ответ 3

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

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

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

Ответ 4

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