再谈Server.Transfer,Response.Redirect的区别
2009-03-12 22:10
323 查看
使用HttpContext.RewritePath来配合Server.Transfer/Execute
有不少人都懂得在Applicaton_Start等事件中使用HttpContext.RewritePath来改变HttpHandler。
如果在Server.Transfer/Execute的调用前,使用RewritePath,更可以起到指定QueryString的效果。
例如
Context.RewritePath("AA.Aspx","","OKOK=3333");
Context.Server.Transfer("Test2.Aspx");
这样,就能执行Test2.Aspx,并且QueryString是OKOK=3333。
这个用途特别大。我目前用这个方法来避免使用Response.Redirect。
Server.Transfer,Response.Redirect的区别
Server.Transfer(ASP 3.0 以上) 和 Response.Redirect 在以前的 ASP 中就存在了,Page.Navigate 是 ASP.NET Beta 1 提供的新功能,它们之间的区别在于:
1、Server.Transfer -
用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件(如:request, session
等)的保存的信息不变,因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程中,浏览器的 URL
栏不变。
2、Response.Redirect - 发送一个 HTTP
响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面
B,页面 B 将无法访问页面 A 中 Form 提交的数据。
(1)Server.Transfer方法:
Server.Transfer("m2.aspx");//页面转向(服务器上执行).
服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx,
并将转向前数据加上m2.aspx页结果返回给浏览器.
(2)Server.Execute方法:
Server.Execute("m2.aspx");
服务器保存此页转向前的数据后,使页面转向到m2.aspx执行,
再返回本页继续执行.再将三者结果合并后返回给浏览器.
以上都是服务器端页面转向所以浏览器不出现页更改记录(显示的地址不会改变).
因此,如果用户刷新此页,也许会出现一些其它意外情况.
此类页转向,可完成一些其它功能,比如访问到前一页面中的服务端控件.
(3)Response.Redirect:
当浏览器请求aspx页面时,碰到Redirect(url)方法,
相当于告诉浏览器,你先需访问某页面,于是浏览器再向服务器发送一个到此页面的请求.
重定位是通过浏览器执行的,在服务器和浏览器之间会产生额外的往返过程。
在网络状况不是很好的情况下,两次请求会大大的
降低应用程序的反应速度,甚至占用多余的带宽.
总结:
在网络状态较好的情况下,Redirect(url)方法效率最高!!
Server.Transfer方法和Server.Execute方法最灵活!!
Server.Execute方法占用资源最多.
有不少人都懂得在Applicaton_Start等事件中使用HttpContext.RewritePath来改变HttpHandler。
如果在Server.Transfer/Execute的调用前,使用RewritePath,更可以起到指定QueryString的效果。
例如
Context.RewritePath("AA.Aspx","","OKOK=3333");
Context.Server.Transfer("Test2.Aspx");
这样,就能执行Test2.Aspx,并且QueryString是OKOK=3333。
这个用途特别大。我目前用这个方法来避免使用Response.Redirect。
Server.Transfer,Response.Redirect的区别
Server.Transfer(ASP 3.0 以上) 和 Response.Redirect 在以前的 ASP 中就存在了,Page.Navigate 是 ASP.NET Beta 1 提供的新功能,它们之间的区别在于:
1、Server.Transfer -
用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件(如:request, session
等)的保存的信息不变,因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程中,浏览器的 URL
栏不变。
2、Response.Redirect - 发送一个 HTTP
响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面
B,页面 B 将无法访问页面 A 中 Form 提交的数据。
(1)Server.Transfer方法:
Server.Transfer("m2.aspx");//页面转向(服务器上执行).
服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx,
并将转向前数据加上m2.aspx页结果返回给浏览器.
(2)Server.Execute方法:
Server.Execute("m2.aspx");
服务器保存此页转向前的数据后,使页面转向到m2.aspx执行,
再返回本页继续执行.再将三者结果合并后返回给浏览器.
以上都是服务器端页面转向所以浏览器不出现页更改记录(显示的地址不会改变).
因此,如果用户刷新此页,也许会出现一些其它意外情况.
此类页转向,可完成一些其它功能,比如访问到前一页面中的服务端控件.
(3)Response.Redirect:
当浏览器请求aspx页面时,碰到Redirect(url)方法,
相当于告诉浏览器,你先需访问某页面,于是浏览器再向服务器发送一个到此页面的请求.
重定位是通过浏览器执行的,在服务器和浏览器之间会产生额外的往返过程。
在网络状况不是很好的情况下,两次请求会大大的
降低应用程序的反应速度,甚至占用多余的带宽.
总结:
在网络状态较好的情况下,Redirect(url)方法效率最高!!
Server.Transfer方法和Server.Execute方法最灵活!!
Server.Execute方法占用资源最多.
相关文章推荐
- asp.net中Response.Redirect与Server.Transfer的区别分析
- Response.Redirect、Server.Transfer、Server.Execute的区别
- Server.Transfer和Response.Redirect区别
- Response.Redirect(url)和Server.Transfer(url)的用法的区别
- Response.Redirect()和Server.Transfer()和Server.Execute()的区别
- asp.net response.redirect和Server.Transfer区别
- response.redirect 和Server.Transfer有什么区别?
- Server.Transfer,Response.Redirect的区别
- Server.Transfer,Response.Redirect的区别;使用HttpContext.RewritePath来配合Server.Transfer/Execute
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别
- server.transfer与 response.redirect 的区别
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别
- asp.net response.redirect和Server.Transfer区别
- Server.Transfer()和Response.Redirect()的区别
- Server.Transfer,Response.Redirect 和 Page.Navigate 的区别
- Response.Redirect ,Server.Transfer ,Server.Execute, 的区别(比较)
- Response.Redirect和Server.Transfer的区别
- Response.Redirect和Server.Transfer的区别
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
- (转帖)Server.Transfer() 与Response.Redirect()、Server.Execute()的区别