Один из распространенных способов сделать это, чтобы написать пользовательский фильтр исключения:
public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new JsonResult
{
Data = new { success = false, error = filterContext.Exception.ToString() },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
, которые могут быть зарегистрированы в качестве глобального фильтра в Global.asax. А затем просто запросите какое-то действие:
$.getJSON('/someController/someAction', function (result) {
if (!result.success) {
alert(result.error);
} else {
// handle the success
}
});
Не будет ли это работать для каждого исключения? – Dashu
@ Дашу, да за каждое исключение. Вы также можете проверить, был ли запрос запросом AJAX и был ли тип содержимого запроса - application/json, и только в этом случае обрабатывать исключение. –
Похоже, хорошее решение, спасибо Дарин! – Dashu