У меня есть длинный контроллер опроса в моем проекте MVC3. У этого таймаута установлен 30 секунд. У меня есть реализация HandleErrorAttribute, которая обрабатывает протоколирование всех ошибок.Лучший способ обработки тайм-аутов с AsyncController
Поскольку тайм-аут выбрасывает исключение 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);
}
}
Лучший подход?
Не могу заставить это работать. Не удается разрешить символ «AsJson». Где вы нашли этот метод? Я использую C# 4.5 – Nick
А его вспомогательный метод, он просто выплевывает JsonResult – Anders