Проблема с использованием ошибки ajax заключается в том, что перенаправление на страницу входа не является ошибкой ajax, и вам может понадобиться использовать это для других целей.Ваша страница входа в систему, вероятно, не всегда должна возвращать 401 ИМХО, так как она на самом деле является общедоступной страницей.
Я уверен, что моя страница входа возвращает специальный атрибут заголовка, который я могу искать.Мы используем много ajax, и у вас может быть глобальный скрипт, который его ищет (который не даст странице отображаться и позволит вам делать то, что вам нравится.
Ваш метод контроллера страницы входа будет выглядеть следующим образом:
public ActionResult LogOn()
{
Response.AddHeader("REQUIRES_AUTH", "1");
return View();
}
Тогда в глобальном масштабе вы можете иметь этот jquery, чтобы справиться с ним ...
$(document).bind("ajaxComplete", function (event, request, settings) {
if (request.getResponseHeader("REQUIRES_AUTH") == "1") {
... addd popup code here.
};
});
PS причина, по которой вы не всегда работаете, заключается в том, что ваш тест тайм-аута должен был бы отловитьистечение срока до того, как пользователь отправит сообщение. Это действительно немного лотерея, и лучше всего завершить ajax (помните, что страница входа по-прежнему является действительным ответом на сообщение ajax, но не тот, который мы хотим)