Мы начинаем переносить наше флагманское приложение из ASP.NET Webforms в ASP.NET MVC. Поскольку это в значительной степени переписывается, мы пытаемся получить как можно больше хороших новых функций. Один из них - новомодный async
. Мы пытаемся сделать все контроллеры и действия async
(где это имеет смысл, конечно) в надежде получить лучшую производительность.Как получить Response.Redirect работать с ASP.NET MVC и async?
Однако проблема, с которой я столкнулся, заключается в том, что Response.Redirect
и даже методы Server.Transfer
просто повесить запрос. Похоже, что-то где-то в тупике.
Это очень жаль, потому что мы довольно привыкли к методу Response.Redirect
, который прерывает все, что вы делаете, и просто перенаправляет весь запрос. Довольно удобно, по крайней мере в веб-формах (упрощает использование шаблона POST-REDIRECT-GET).
Также, возможно, что более важно, Response.Redirect
и Server.Transfer
используется в нашем обработчике Application_Error
, который передает запрос на страницу с ошибкой. Я даже не знаю никаких альтернатив, которые можно было бы там использовать.
Итак ... нет способа, как мы можем вернуть Response.Redirect
к жизни?
@ Рихард - Этот вопрос касается веб-форм ASP.NET. Это о MVC. Кроме того, в этом вопросе было предложено отказаться от «Response.Redirect», передав «false» в качестве второго параметра (не прерывает запрос, просто устанавливает заголовки переадресации). Здесь я прошу о том, чтобы заставить его работать даже с «истинным» как вторым параметром. Поэтому я действительно не думаю, что они дубликаты. –
Помните, что API-адреса переадресации одинаковы для WebForms и MVC ... Кроме того, связанная статья показывает, что делать в случае ошибки, чтобы избежать прерывания потоков (дорогостоящих), использующих версию переадресации совместимости. – Richard
@ Рихард - Да, но этот подход предполагает передачу любых соответствующих кодов возврата. Тогда я мог бы использовать «RedirectResult». Вместо этого я хочу видеть, могу ли я как-то сохранить возможность выполнять запрос перенаправления и прерывания из любого места в моем коде. И я, и мои коллеги-программисты очень привыкли к этой практике. –