Click here to Skip to main content
15,867,308 members
Articles / Web Development / ASP.NET

Server.Transfer VS Response.Redirect – Simplified

Rate me:
Please Sign up or sign in to vote.
4.91/5 (46 votes)
16 Jun 2021CPOL4 min read 198.4K   35   13
This blog will discuss the difference between server.transfer and response.redirect.

Introduction

In ASP.NET, some of the concepts do the same task but are meant to be used in different scenarios. One such concept which is confusing and most discussed among developers is the difference between “Server.Transfer” and “Response.Redirect”.

Image 1

response.redirect” and “server.transfer” helps to transfer user from one page to other page while the page is executing. But the way they do this transfer / redirect is very different.

In this short blog, we will discuss how they differ and in which scenarios we should use them.

In case you are a visual person and would like see a demonstration rather than theory, I would suggest to see the below Facebook video which explains the difference in a more demonstrative way.

Image 2

“Server.Transfer”vs “response.Redirect”

The main difference between them is who does the transfer. In “response.redirect”, the transfer is done by the browser while in “server.transfer”, it’s done by the server. Let us try to understand this statement in a more detailed manner.

In “Server.Transfer”, following is the sequence of how the transfer happens:

  1. User sends a request to an ASP.NET page. In the below figure, the request is sent to “WebForm1” and we would like to navigate to “Webform2”.
  2. Server starts executing “Webform1” and the life cycle of the page starts. But before the complete life cycle of the page is completed, “Server.transfer” happens to “WebForm2”.
  3. Webform2” page object is created, full page life cycle is executed and output HTML response is then sent to the browser.
Image 3

One important point to note here is the URL is not changed to the target page. If you have sent request from “Webform1.aspx” to redirect to “WebForm2.aspx” on the browser URL, you will still see “WebForm1.aspx”.

While in “Response.Redirect”, following is the sequence of events for navigation:

  1. Client (browser) sends a request to a page. In the below figure, the request is sent to “WebForm1” and we would like to navigate to “Webform2”.
  2. Life cycle of “Webform1” starts executing. But in between the life cycle “Response.Redirect” happens.
  3. Now rather than server doing a redirect, he sends a HTTP 302 command to the browser. This command tells the browser that he has to initiate a GET request to “Webform2.aspx” page.
  4. Browser interprets the 302 command and sends a GET request for “Webform2.aspx”.
Image 4

In this case, you will see the URLs are changed as per redirection. So if you have redirected to “Webform2.aspx”, then on the browser URL, you should see “WebForm2.aspx”.

In other words, “Server.Transfer” is executed by the server while “Response.Redirect” is executed by the browser. “Response.Redirect” needs two requests to do a redirect of the page.

So When to Use “Server.Transfer” and When to Use “Response.Redirect”?

Use “Server.Transfer” when you want to navigate pages which reside on the same server, use “Response.Redirect” when you want to navigate between pages which resides on different server and domain.

Image 5

Below goes the consolidated table with all the differences as discussed at the top.

  Server.Transfer Response.Redirect
Redirection Redirection is done by the server. Redirection is done by the browser client.
Browser URL Does not change. Changes to the redirected target page.
When to use Redirect between pages of the same server. Redirect between pages on different server and domain.

What is the Importance of “preserveForm” Flag in “Server.Transfer”?

Server.Transfer” helps to redirect from one page to other page. If you wish to pass query string and form data of the first page to the target page during this redirection, you need to set “preserveForm” to “true” as shown in the below code.

C#
Server.Transfer("Webform2.aspx",true);

By default, the value of “preserveForm” is “true”.

Response.Redirect(URL,true) vsResponse.Redirect(URL,false) ?

Response.Redirect(URL,false): Client is redirected to a new page and the current page on the server will keep processing ahead.

Response.Redirect(URL,true): Client is redirected to a new page but the processing of the current page is aborted.

Image 6

Below is a Facebook video which demonstrates practically the difference between server.transfervsresponse.redirect. A big thanks to www.questpond.com to allow me to publish this videos for free on Facebook.

Image 7

For Further Reading do watch the below Interview preparation videos and step by step video series.

 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect https://www.questpond.com
India India

Comments and Discussions

 
GeneralMy vote of 5 Pin
Lucky Vdb17-Jun-21 21:13
professionalLucky Vdb17-Jun-21 21:13 
QuestionCan we do response.redirect after Response.TransmitFile Pin
Member 1453705421-Jul-19 8:22
Member 1453705421-Jul-19 8:22 
GeneralMy vote of 5 Pin
Santhakumar M6-Jan-16 22:32
professionalSanthakumar M6-Jan-16 22:32 
GeneralMy vote of 4 Pin
Kamlesh_Mj22-Sep-15 4:17
Kamlesh_Mj22-Sep-15 4:17 
QuestionConsequences on AJAX Toolkit Pin
Member 1065156510-Aug-15 1:04
Member 1065156510-Aug-15 1:04 
QuestionServer.transfer in MVC Pin
Member 117327181-Jun-15 0:33
Member 117327181-Jun-15 0:33 
Generalmy vote 5 Pin
King Fisher3-Feb-15 6:10
professionalKing Fisher3-Feb-15 6:10 
QuestionGood explanation and questions Pin
Ricardo Cantillo15-Nov-14 6:05
Ricardo Cantillo15-Nov-14 6:05 
GeneralMy vote of 5 Pin
Gaurav Aroraa27-Oct-14 10:31
professionalGaurav Aroraa27-Oct-14 10:31 
GeneralMy vote of 5 Pin
Sibeesh KV28-Sep-14 19:51
professionalSibeesh KV28-Sep-14 19:51 
GeneralGood Explanation Pin
RomKap21-May-14 19:51
RomKap21-May-14 19:51 
GeneralNicely explained Pin
sanjay bathre20-May-14 20:56
sanjay bathre20-May-14 20:56 
QuestionNice, Simple & Informative Pin
poiuytrewq1234987654320-May-14 20:44
poiuytrewq1234987654320-May-14 20:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.