У меня есть веб-проект 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
}