Я ожидаю, что если произойдет ошибка (например, я ввел неправильный адрес страницы сайта), пользователь будет перенаправлен на соответствующую страницу ошибки (в данном случае - 404). Но для типа ошибки 500 (Внутренняя ошибка сервера) я вижу перенаправление в журнале VS, но пользователь остается на той же странице, которая вызвала ошибку.
Вот как работает моя веб-страница:
Когда пользователь открывает веб-страницу, выполняется метод ActionResult
контроллера и возвращается View();
View визуализирует HTML-код, а затем запускает jQuery ajax, который выполняет другой метод контроллера с JsonResult
В этом методе контроллера SQL-запрос подготавливается и выполняется методом статического класса, который использует SqlClient
В методе статического класса я получаю SqlException
(например, я пытаюсь выполнить несуществующую процедуру):
Исключение типа 'System.Data.SqlClient.SqlException' произошло в System.Data.dll, но не было обработано в коде пользователя
Дополнительная информация: Не удается найти сохраненный продукт "dbo.NonExistingProcedureName".
Я ожидал, что в этом случае пользователь будет перенаправлен на страницу 500 ошибок, и я вижу перенаправление в журнале VS:
Тип события Время события Длительность потока Подробное описание
ASP.NET (активирован)
Перенаправление на «/ error / serverError? Aspxerrorpath = / dash / jObject» 11.16s [24128]
Рабочая нить
...
ASP.NET GET "/ error / serverError" 11.16s [24128]
Рабочая нить
... но перенаправление фактически не завершено, и пользователь по-прежнему просматривает страницу, которая вызвала ошибку.
Итак, почему перенаправление на страницу ошибки не работает должным образом?