Server.Transfer Vs. Response.Redirect

前端 未结 16 2500
夕颜
夕颜 2020-11-22 14:38

What is difference between Server.Transfer and Response.Redirect?

  • What are advantages and disadvantages of each?
  • When is one
16条回答
  •  情深已故
    2020-11-22 15:37

    enter image description here

    "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 case you are visual guy and would like see demonstration rather than theory I would suggest to see the below facebook video which explains the difference in a more demonstrative way.

    https://www.facebook.com/photo.php?v=762186150488997

    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 detail manner.

    In "Server.Transfer" following is the sequence of how 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.

    enter image description here

    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 of 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".

    enter image description here

    In other words "Server.Transfer" is executed by the server while "Response.Redirect" is executed by thr browser. "Response.Redirect" needs to 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.

    enter image description here

    Below is a summary table of which chalks out differences and in which scenario to use.

    enter image description here

提交回复
热议问题