Server.Transfer VS Response.Redirect – Simplified
https://www.codeproject.com/Articles/775221/Server-Transfer-VS-Response-Redirect-Simplified
Introduction
In ASP.NET, some of the concepts do the same task but are meant to be used in different scenarios. One such concept which is confusing and most discussed among developers is the difference between “Server.Transfer
” and “Response.Redirect
”.
“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 this short blog, we will discuss how they differ and in which scenarios we should use them.
In case you are a visual person and would like see a demonstration rather than theory, I would suggest to see the below Facebook video which explains the difference in a more demonstrative way.
“Server.Transfer”vs “response.Redirect”
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 detailed manner.
In “Server.Transfer
”, following is the sequence of how the transfer happens:
- 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
”. - 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
”. - “
Webform2
” page object is created, full page life cycle is executed and output HTML response is then sent to the browser.
One important point to note here is the URL is not changed to the target page. If you have sent request from “Webform1.aspx” to redirect to “WebForm2.aspx” on the browser URL, you will still see “WebForm1.aspx”.
While in “Response.Redirect
”, following is the sequence of events for navigation:
- 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
”. - Life cycle of “
Webform1
” starts executing. But in between the life cycle “Response.Redirect
” happens. - 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. - Browser interprets the 302 command and sends a
GET
request for “Webform2.aspx”.
In this case, you will see the URLs are changed as per redirection. So if you have redirected to “Webform2.aspx”, then on the browser URL, you should see “WebForm2.aspx”.
In other words, “Server.Transfer
” is executed by the server while “Response.Redirect
” is executed by the browser. “Response.Redirect
” needs 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.
Below goes the consolidated table with all the differences as discussed at the top.
Server.Transfer | Response.Redirect | |
Redirection | Redirection is done by the server. | Redirection is done by the browser client. |
Browser URL | Does not change. | Changes to the redirected target page. |
When to use | Redirect between pages of the same server. | Redirect between pages on different server and domain. |
What is the Importance of “preserveForm” Flag in “Server.Transfer”?
“Server.Transfer
” helps to redirect from one page to other page. If you wish to pass query string and form data of the first page to the target page during this redirection, you need to set “preserveForm
” to “true
” as shown in the below code.
Server.Transfer("Webform2.aspx",true);
By default, the value of “preserveForm
” is “true
”.
Response.Redirect(URL,true) vsResponse.Redirect(URL,false) ?
Response.Redirect(URL,false)
: Client is redirected to a new page and the current page on the server will keep processing ahead.
Response.Redirect(URL,true)
: Client is redirected to a new page but the processing of the current page is aborted.
Below is a Facebook video which demonstrates practically the difference between server.transfervsresponse.redirect
. A big thanks to www.questpond.com to allow me to publish this videos for free on Facebook.
Server.Transfer VS Response.Redirect – Simplified的更多相关文章
- 1. Server.Transfer和Response.Redirect
今天在使用ServerTransfer和Response.Redirect定位到当前页面来实现刷新页面时,发现了一些现象: 1.使用Response.Redirect刷新本页面,造成当前页面显示的数据 ...
- Server.Transfer 和 Response.Redirect 用法区别
在ASP.NET中,在后台传值方式目前大多都是用 Response.Redirect("页面地址") 来重定向页面的,但是现在还有一种方式也可以达到重定向页面的作用,而且在某些时刻 ...
- Server Transfer()和Response.Redirect()的使用
一.Server Transfer() Server.Transfer:对于当前请求,终止当前页的执行,并使用指定的页url路径来开始执行一个新页. 1. Server.Transfer只能够转跳到本 ...
- Server.Transfer和Response.Redirect区别
根本上,Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,因此会有以下区别:1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Resp ...
- 页面跳转 Server.Transfer和 Response.Redirect的区别
1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...
- Server.Transfer和Response.Redirect的区别
(1)Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页 ...
- asp.net知识汇总-页面跳转Server.Transfer和Response.Redirect
1. Server.Transfer 服务器端跳转 webform1.aspx跳转到webform2.aspx页面 webform1.aspx代码如下: protected void Page_Loa ...
- c#页面重定向,Server.Transfer 和 Response.Redirect
Server.Transfer() 重定向发生在服务器端,把处理的控制权从当前页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变. 1.只能 ...
- ASP.NET页面传值之Server.Transfer 和Response.Direct
先看实例: B.apsx: public string TextBox1Text { get { ...
随机推荐
- 怎么访问不在网站目录下文件(iis虚拟目录设置)
很多时候,上传的文件多了,架设服务器当初设定的主目录所在盘空间往往就不够了,怎么办?这就需要设置虚拟目录.虚拟目录就是将其他目录以映射的方式虚拟到该FTP服务器的主目录下,这样,一个FTP服务器的主目 ...
- 文件内容统计:对任意给定的.txt文件进行内容的字符数、行数、单词数进行统计
项目源码地址:https://gitee.com/xjtsh/projects 功能实现: wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file ...
- linux中的pwd
https://www.cnblogs.com/crazylqy/p/5818745.html
- POI操作Excel详解,读取xls和xlsx格式的文件
package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
- EasyUI Tree节点拖动到指定容器
效果图:将tree节点拖动到指定的DIV中,结果显示节点的id和text 代码: <!DOCTYPE html> <html> <head> <meta ch ...
- 常用C++面试总结
指定对齐值:#pragma pack(n),n=1,2,4,8,16改变系统的对齐系数struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成 ...
- ubuntu linux修改文件所属用户(owner属主)和组(groud属组、用户组)
使用chown命令可以修改文件或目录所属的用户: 命令格式:sudo chown 用户 目录或文件名 例如:sudo chown -R griduser /home/dir1 (把home目录下的d ...
- fiddler的一些记录
通过execaction.exe可以给fiddler发命令,控制抓包开始和停止 https://stackoverflow.com/questions/29916508/start-and-stop- ...
- Linux sed命令 以行为单位编辑文本,或替换文本中的文字
sed -e 4a\newLine testfile 首先查看testfile中的内容如下: $ cat testfile #查看testfile 中的内容 HELLO LINUX! Linux is ...
- Java连接MySQL报出警告 WARN: Establishing SSL connection without server's identity verification is not recommended.
很多人使用JDBC连接MySQL时报出警告: WARN: Establishing SSL connection without server's identity verification is n ...