Difference between Response.Redirect, Response.RedirectParmanent and Servier.Transfer

According to MSDN

Response.Redirect(): Redirects a request to a new URL

Response.RedirectParmanent(): Performs a permanent redirection from a requested URL to a specified URL.

Server.Transfer(): Sends all of the information that has been assembled for processing by one .asp file to a second .asp file.

Response.RedirectParmanent() is an extension function introduced in .NET 4.0.The reason behind introducing this method is to indicate the Response Code to the Search Engine that the page is permanently moved.The Response.Redirect generates Response code as 302 whereas RedirectParmanent returns 301.

Thus say you have a page, and which is included to search engine for a long time, if you use Response.Redirect() it will not change this effect to the search engine(taking this a temporary change), while if you use Response.RedirectParmanent() it will take it as permanent.

In case of Server.Transfer() the actual response is updated, but there is no effect to the search engine, and search engine will think the output is coming from the same page that is called.

For example, if you have 2 pages (Default.aspx and Home.aspx) where Default.aspx redirects to Home.aspx, the above 3 methods shows the following behavior.

1. Response.Redirect() : Search Engine will take this redirection as Temporary(Status 301) and always keep Default.aspx in its cache.

2. Response.RedirectParmanent() : Search Engine will take this a permanent redirection(Status 302) and will remove Default.aspx from its database and include Home.aspx for better performance on search.

3. Server.Transfer() : Search Engine will be unaware of any redirection been took place (Status 200) and will keep Default.aspx to its database. It will think Default.aspx is producing the output response of Home.aspx.

When to use:

  • Response.Redirect() is perfect when your page is temporarily changed and will again be reverted to original within a short span of time.
  • Response.RedirectParmanent() when you are thinking of deleting the original page totally after the search engines changes its database.
  • Server.Transfer() when you are thinking of keeping the page for ever, and to let search engine unaware of this redirection. 


    Blogger Comment
    Facebook Comment


Post a Comment