«response.redirect» и «server.transfer» помогают переносить пользователя с одной страницы на другую страницу во время ее выполнения. Но способ, которым они делают эту передачу / перенаправление, очень отличается.
Если вы визуальный парень и хотели бы увидеть демонстрацию, а не теорию, я бы посоветовал посмотреть нижеприведенное видео на Facebook, которое объясняет разницу более наглядно.
https://www.facebook.com/photo.php?v=762186150488997
Основное различие между ними заключается в том, кто делает перевод. В «response.redirect» передача выполняется браузером, а в «server.transfer» - сервером. Попробуем разобраться в этом утверждении более подробно.
В «Server.Transfer» следующая последовательность передачи: -
1. Пользователь отправляет запрос на страницу ASP.NET. На рисунке ниже запрос отправляется в «WebForm1», и мы хотим перейти к «Webform2».
2.Сервер начинает выполнение «Webform1» и запускается жизненный цикл страницы. Но до завершения полного жизненного цикла страницы происходит «Server.transfer» с «WebForm2».
3. Создается объект страницы "Webform2", выполняется полный жизненный цикл страницы, а затем выводимый HTML-ответ отправляется в браузер.
В «Response.Redirect» следующая последовательность событий для навигации: -
1.Клиент (браузер) отправляет запрос на страницу. На рисунке ниже запрос отправляется в «WebForm1», и мы хотим перейти к «Webform2».
2. Цикл жизни "Webform1" начинает выполняться. Но между жизненным циклом происходит отклик Response.Redirect.
3. Теперь сервер не выполняет перенаправление, а отправляет команду HTTP 302 в браузер. Эта команда сообщает браузеру, что он должен инициировать запрос GET на странице "Webform2.aspx".
4.Browser интерпретирует команду 302 и отправляет запрос GET для «Webform2.aspx».
Другими словами, «Server.Transfer» выполняется сервером, а «Response.Redirect» - браузером. «Response.Redirect» необходимо выполнить два запроса для перенаправления страницы.
Итак, когда использовать «Server.Transfer» и когда использовать «Response.Redirect»?
Используйте «Server.Transfer», когда вы хотите перемещаться по страницам, которые находятся на одном сервере, используйте «Response.Redirect», когда вы хотите перемещаться между страницами, которые находятся на другом сервере и в домене.
Ниже приводится сводная таблица, в которой выявляются различия и в каком сценарии использовать.