У меня есть пост Ajax, который выглядит так:
$.ajax({
type: "post",
dataType: "html",
url: "/MyController/MyAction",
data: AddAntiForgeryToken({
SomeValue: "Abc"
}, "#FormIdFromWhereToCopyAntiForgeryTokenFrom"),
success: function (response) {
if (response === "True") {
//do something
} else {
//call the function to try again in 10 seconds.
}
},
error: function (e) {
//call the function to try again in 10 seconds.
}
});
Теперь в некоторых сценариях возможно, что эта функция выдаст ошибку, это очень редкие сценарии, но они возможны, и я хочу их обработать. Для цели вопроса, я не думаю, что важно погрузиться в них. В любом случае, на моем сервере я настроил проверку, когда происходит ошибка с этим сценарием. Я фиксирую его и затем возвращаю ответ, который обычно говорит браузеру обновить себя. Но так как это вызов ajax, он этого не сделает. Вот код для этого:
public class CustomExceptionHandler : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
var exception = filterContext.Exception;
if (exception != null)
{
var exceptionType = exception.GetType();
var someType= typeof(SomeExceptionType);
if (exceptionType.IsInstanceOfType(someType) || someType == exceptionType)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.RawUrl);
return;
}
}
}
}
Как вы можете видеть выше, идея состоит в том, чтобы заставить страницу обновляться, и после этого проблемы будут решены. Тем не менее, я не уверен, как проверить мой javascript в разделе ошибок, чтобы сервер отправил результат перенаправления, чтобы я мог сказать браузеру обновить.
Буду ли я смотреть на заголовки или что-то еще? Не могли бы вы опубликовать пример, как я могу решить эту проблему?