2014-11-05 5 views
1

У меня есть веб-проект WebForms в .Net 4.5, к которому я добавил пакет ASP.Net Web API 2.2 NuGet. Методы веб-API вызываются успешно и возвращают ожидаемые значения.Глобальный обработчик исключений в Web API 2.2 не имеет исключения

Однако после создания глобального класса обработчика исключений для Web API 2.2 и изменения имени класса контроллера из ProductController в Product, чтобы вызвать следующую ошибку, эта ошибка не попала в глобальный обработчик исключений.

Сообщение об ошибке, когда суффикс контроллера удаляется из Web API класса ProductController

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost/mysite/Vendors/api/ 
Product/SaveProductName'.","MessageDetail":"No type was found that matches the controller named 'Product'."} 

Мой вопрос: Почему глобальный обработчик исключений не поймать эту ошибку, но ловить исключения, в методе Web API когда метод Web API найден успешно, т.е. имя класса ProductController не изменено, чтобы преднамеренно вызвать исключение?

Global Exception Handler, как показано ниже

public class GlobalExceptionLogger : ExceptionLogger 
{ 
public GlobalExceptionLogger() 
    { 

    } 

public override void Log(ExceptionLoggerContext context) 
{ 
    if (context != null && context.Exception != null) 
    { 
      MyLogging.Log(context.Exception); 
    } 
    base.Log(context); 
} 
} 

класса Web контроллера API (для ошибки не поймана глобальным обработчиком исключений Я изменил имя класса к продукту)

public class ProductController: ApiController 
{ 
    //Methods omitted to SAVE SPACE 
} 

ответ

2

Это не пойман, потому что web api поймал это и превратил его в ответ 404. Сама оболочка обрабатывает этот случай, а не код пользователя.

Смежные вопросы