Difference Between Server.Execute, Server.Transfer and Response.Redirect

Server.Execute Vs Server.Transfer

When Server.Execute is used, a URL is passed to it as a parameter, and the control moves to this new page. Execution of code happens on the new page.
Once code execution gets over, the control returns to the initial page, just after where it was called.

However, in the case of Server.Transfer, it works very much the same, the difference being the execution stops at the new page itself (means the control isn't returned to the calling page).

In both the cases, the URL in the browser remains the first page URL (doesn't refresh to the new page URL) as the browser isn't requested to do so.

Server.Transfer Vs Response.Redirect

Response.Redirect simply tells the browser to visit another page. Server.Transfer helps reduce server requests, keeps the URL the same and, with a little bug-bashing, allows you to transfer the query string and form variables.

The Server.Transfer method also has a second parameter-"preserveForm". If you set this to True, using a statement such as Server.Transfer("TargetForm.aspx", True), the existing query string and any form variables will still be available to the page you are transferring to.

Transferring to another page using Server.Transfer conserves server resources. Instead of telling the browser to redirect, it simply changes the "focus" on the Web server and transfers the request. This means you don't get quite as many HTTP requests coming through, which therefore eases the pressure on your Web server and makes your applications run faster. But because the "transfer" process can work on only those sites running on the server, you can't use Server.Transfer to send the user to an external site. Only Response.Redirect can do that.