`
shirlly
  • 浏览: 1624089 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

Response.Redirect和Server.Transfer的区别

    博客分类:
  • .NET
阅读更多
response.redirect 其实是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求那个新的地址,流程如下:


  浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址(服务器返回的Response.Redirect后面的地址)

PS: ASP.net里面用Response.Redirect跳转,PHP里面是Header("Location",$URL);这两种方式都是一样的原理,就是在输出的HTTP头里面加上一个Location字段,值为要跳转的目的地址,同时把返回的HTTP状态值设为302。



Server.Transfer 语句当接受地址后是直接转向后面的地址,流程如下:

  浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件。



优缺点比较:

     1.Server.Transfer 只能在同一服务器端的同一站点内进行重定向;而response.redirect 没有此限制。
Server.Transfer 后面只能使用形如test.asp这样的相对路径的文件或者目录地址,不能带参数(似乎也可以带参,add By Shirlly)。比如要定向到 test.asp?id=1就只能用Response.Redirect 而不能用Server.Transfer。

     2.Server.Transfer 在服务器端直接重定向,不用像response.Redirect一样要先与浏览器通信再重定向,这样可以减轻服务器的压力,效率高。

     3.Server.Transfer 可以保留上下文信息,Server.Transfer 方法有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 querystring 和任何 form 变量都会同时传递到你定位的页面。 例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。

     4.Server.Transfer 不会改变客户端的浏览器地址栏内的地址,也不会更新浏览器的历史记录。而response.Redirect 则会显示重定向后的地址,也会更新浏览器的历史记录。

总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面(有一点小小的缺陷,请参见:http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920 )。
原文连接:http://www.cnblogs.com/baiyicug/archive/2008/08/27/1277729.html
分享到:
评论

相关推荐

    Response.Redirect与Server.Transfer的区别

    页面的跳转问题 主要包括Response.Redirect Server.Transfer的区别

    Server.Transfer,Response.Redirect的区别

    如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个页面,而另一些人好像偏爱于神秘的 Server.Transfer,那么,这二者有什么区别? Response.Redirect ...

    asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别

    你可以使用下面的代码将用户引导到另一个页面: Response.Redirect(“WebForm2.aspx”) 或者 Response.Redirect(“http://www.cnnas.com/”) Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server....

    asp.net中Response.Redirect与Server.Transfer的区别分析

    Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上... Response.Redirect则是客户端第一次请求服务器返回状态代码302及新URL,客户端再次请求新URL,服务器再返回新页面,比Server.Transfer多一次应答。

    Response.Redirect 正在中止线程解决方案

    这两天在开发调试过程中,老是会出现在一个 “正在中止线程“...以下是主要信息的摘要: 症状 如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 t

    ASP.NET 重定向的几种方法小结

    关于重定向的几个方法和说明 Server.Transfer方法 Server.Execute方法. Response.Redirect:

    net 面试题集锦.doc

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。...使用Server.Transfer

    ASP.NET经典60道面试题

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。...3.使用Server.Transfer

    asp.net跳转页面的三种方法比较

    三个页面跳转 response.redirect server.transfer sever.execute 应用

    公司使用的Net笔试题及答案

    如: 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答: private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。...使用Server.Transfer

    ASP.NET页面传值汇总.pdf

    ASP.NET页面传值汇总.pdf response.redirect cookies session Application server.transfer

    ASP.NET四种页面导航方式之比较与选择

    在ASP.NET应用中,Web表单之间的导航有多种方式:用超级链接,用Response.Redirect,用Server.Transfer,或者用Server.Execute。本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式。

    .net面试题

    经典.net面试题目 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。...3.使用Server.Transfer 4.使用Application 5.使用Cache 6使用HttpContext的Item属性 7.使用文件 8.使用数据库

    asp.net 页面间传值与跳转的区别

    在a.aspx跳转到b.aspx 通过Server.Transfer(“b.aspx”) 与Response.Redirect(“b.aspx”)的区别 如果是通过通过Server.Transfer()在a.aspx跳转到b.aspx的,则在b.aspx页面,可以查找到保存在a.aspx页面中的 控件中...

    经典ASP.NET面试题

    收集130道ASP.NET面试题 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 ....使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是

    精心搜集来的c#面试题

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 ....使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。

    ASP.NET面试题大全新

    《ASP.NET面试题大全》内容摘要:private、 protected、 public、 internal 修饰符的访问权限,ASP.NET 页面之间传递值的几种方式,C#中的委托是什么,件是不是一种委托,override与重载的区别,实现...使用Server.Transfer

    asp.net2.0系列教程第2章_第3节

    Server.Transfer和Response.Redirect实现页面跳转的区别Adventure Works网站示例项目

Global site tag (gtag.js) - Google Analytics