В моем проекте MVC3 у меня долгое время опрашивающий контроллер. Время ожидания установлено на 30 секунд. У меня есть реализация HandleErrorAttribute, которая обрабатывает протоколирование всех ошибок.
Поскольку тайм-аут выдает исключение TimeoutException, это означает, что они будут представлены в журнале.
Мне нужно перехватить эту ошибку, прежде чем мой класс HandleErrorAttribute получит ее и вернет объект json вместо страницы с ошибкой 500. Каков наилучший подход для этого?
Я сделал это, и это работает
public class HandleTimeout : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if(filterContext.Exception is TimeoutException)
{
filterContext.Result = new { Timeout = true }.AsJson();
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.StatusCode = 200;
}
base.OnException(filterContext);
}
}
Лучший подход?