#c_sharp #net #aspnet #aspnet_mvc #исключения
Проблема в том, что метод Response.End вызывает исключение ThreadAbortException, которое мешает дебажить. Задача состоит в том, чтобы не возникало данное исключение. Метод Response.Redirect ("nextpage.aspx", false) продолжит дальнейшее выполнение кода, что не допустимо в моем случае так, как далее свалится 500-я ошибка. Как обойти эту ситуацию? Как прервать дальнейшее выполнение кода при вызове метода Response.Redirect("nextpage.aspx", false)?
Ответы
Ответ 1
Никак. На момент вызова Response.End вы обычно достаточно глубоко в стеке вызова методов. Каждый из которых может что-то возвращать. Единственный способ выйти из метода, не возвращая при этом значение - вылететь с исключением. Поэтому Response.End останавливает обработку запроса бросанием исключения, которое ловится выше по коду рантаймом, и превращается в редирект. Т.е. вариантов у вас всего два: [Правильный] Аккуратно вернуть результат из всех методов, до самого контроллера. В контроллере вернуть RedirectResult. Заглушить ловлю исключений студией при отладке - снять чекбокс остановки на ThreadAbortException в Debug / Windows / Exceptions. Первый вариант предпочтительнее, т.к. иначе редирект через Response.Redirect обеспечит вам трудноуловимые баги с "cannot redirect after http-headers sent" при случайном смешивании Response.Redirect и MVC-ного RedirectResult.
Комментариев нет:
Отправить комментарий