Как можно регистрировать все ошибки внутреннего сервера 500, возвращенные всеми действиями в Web Api 2? Как вы перехватываете ошибку, чтобы иметь возможность регистрировать трассировку стека?Журнал 500 Ошибки в WebApi 2
ответ
Вы можете использовать Elmah.MVC пакет NuGet.
Elmah (модули протоколирования ошибок и обработчики) является приложением для всей ошибки регистрации объекта, который полностью подключаемый. Это может быть , динамически добавленное к запущенному веб-приложению ASP.NET или даже всем веб-приложениям ASP.NET на машине, без необходимости повторной компиляции или повторного развертывания .
После ELMAH уронили в работающее веб-приложение и настроен соответствующим образом, вы получаете следующие возможности без изменения ни одной строки кода:
Logging почти всех необработанных исключений. Веб-страница удаленно просмотреть весь журнал перекодированных исключений. Веб-страница для удаленного просмотра полной информации о любом зарегистрированном исключении, включая цветной стек следов. Во многих случаях вы можете просмотреть исходный желтый экран смерти, сгенерированный ASP.NET для данного исключения, даже с отключенным режимом customErrors . Уведомление по электронной почте о каждой ошибке по адресу . RSS-фид последних 15 ошибок из журнала.
После регистрации Elmah
в вашем Web API проекта вы можете зарегистрировать собственный фильтр в вашем веб-приложение, которое будет регистрировать все unhanded исключения из коробки.
public class UnhandledExceptionFilter : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
//If you do not want to use Elmah, you can manually handle your ex here
Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(context.Exception));
}
}
Вы можете зарегистрировать этот фильтр в своем WebApiConfig.cs
файле.
config.Filters.Add(new UnhandledExceptionFilter());
После настройки вы можете проверить свою ошибку при просмотре /elmah
пути от корневого каталога. (Ваше приложение защищено, так как этот путь будет выполняться только с размещенного компьютера по умолчанию).
Я просто хотел, чтобы держать его в простой и убедиться, что я вошел исключение.
Создание класса ExceptionFilter, как показано ниже
public class ExceptionFilter : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
// actionExcutedContext.Exception is the exception log it however you wish
Log.Exception(actionExecutedContext.Exception);
actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.InternalServerError, new
{
actionExecutedContext.Exception.Message
});
}
}
Также необходимо настроить WebAPI для вызова фильтра. Это делается при создании вашей конфигурации.
config.Filters.Add(new ExceptionFilter());
Log.Exception
линия просто вспомогательный класс для меня, вы можете зарегистрировать ее как бы вы выбрали.
- 1. Ошибки 500 с WebAPI и Firefox
- 2. WebAPI 2 Ошибки маршрутизации/хостинга
- 3. WebAPI Пустой 500 Ошибка
- 4. Классический регистрационный журнал ASP (ошибки 500 и 500.100)
- 5. Ошибка внутреннего сервера WebApi 500
- 6. Внутренняя ошибка сервера 500 w/Журнал IIS
- 7. Ошибки форматирования intercept webapi json
- 8. Пользовательский журнал WebApi и хранилище Azure
- 9. PHP журнал в виде ошибки
- 10. WebApi: ошибки чтения
- 11. Ошибки: проверить журнал компилятора
- 12. WebAPI Delete Causing 500/Object Not Found
- 13. WebAPI AuthorizeAttribute с Protobuf возвращает 500
- 14. Неформатированный журнал ошибок в CodeIgniter 2
- 15. Синхронный XMLHttpRequest в WebApi 2
- 16. Пользовательские ActionFilters В WebApi 2
- 17. ASP.NET WebAPI 2 Маршрутизация
- 18. WebAPI 2 Аутентификация Путаница
- 19. Set WebApi 2 маршрута
- 20. WebAPI 2 Атрибут маршрутизации
- 21. IIS7 - 500 Код ошибки
- 22. Кэширование WebAPI 2
- 23. 500 Ошибки вызвано = «» проверить
- 24. cronjob дает 500 ошибки
- 25. Код ошибки HTTP 500
- 26. HttpWebRequest, избегая ошибки (500)
- 27. Обработка ошибок Elmah WebAPI 2
- 28. PHP Вывод ошибки 500
- 29. Журнал сервера Glassfish 2
- 30. WebAPI 2 Перенаправление