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.