| |
|
What is the difference between Server.Transfer and Response.Redirect?
Both "Server" and "Response" are objects of ASP.NET. Server.Transfer and Response.Redirect
both are used to transfer a user from one page to another. But there is an underlying difference.
//Usage of Server.Transfer & Response.Redirect
Server.Transfer("Page2.aspx");
Response.Redirect("Page2.aspx");
The Response.Redirect statement sends a command back to the browser to request the next page
from the server. This extra round-trip is often inefficient and unnecessary, but this established standard
works very well. By the time Page2 is requested, Page1 has been flushed from the server’s memory and no
information can be retrieved about it unless the developer explicitly saved the information using some
technique like session, cookie, application, cache etc.
The more efficient Server.Transfer method simply renders the next page to the browser without an extra
round trip. Variables can stay in scope and Page2 can read properties directly from Page1 because it’s still
in memory. This technique would be ideal if it wasn’t for the fact that the browser is never notified that
the page has changed. Therefore, the address bar in the browser will still show “Page1.aspx” even though the
Server.Transfer statement actually caused Page2.aspx to be rendered instead. This may
occasionally be a good thing from a security perspective, it often causes problems related to the browser being
out of touch with the server. Say, the user reloads the page, the browser will request Page1.aspx instead of
the true page (Page2.aspx) that they were viewing.
In most cases, Response.Redirect and Server.Transfer can be used interchangeably. But in some cases,
efficiency or usability may be the deciding factor in choosing.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| |