1、Response.Redirect():
Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。
  
这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。

2、Server.Transfer
    
 Server.transfer是IIS 5.0新增加的一个功能。它解决了 Response.Redirect的两个重要的缺陷:
 1)在Response.Redirect中,我们得不到任何第一页的输出
 2)Response.Redirect会丢失request中的所有属性,当然我们可以通过一些其他的办
 法,比如session来搞定,可是,有些页的参数是在request中传过来的,这样的话,就不行了
 3) Response.Redirect需要client端再发起一个请求。
 server.transfer就很好地解决了这些问题。它是从server端直接向下一页发起请求,不需要client再次发送请求.
 如果你的网页非常依赖response.redirect,这个小小的改变可以提高将近25%的效率。(根据微软文档).

Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。
  
    如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。
  
    默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。
  
    同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的 EnableViewStateMac属性设置成False。

server.Transfer()有一个不足就是:当用户在a.aspx中提交了一个表单,然后用Server.Transfer()进入 b.aspx,这时如果用户刷新一下页面,浏览器便会问用户是否“重试”发送表单,如果用户点击“是”,那么,表单中的数据被重新发送到服务器。如发送表单的作用就是为了向数据库中插入一条记录,结果导不希望发生的事——同一表单被多次加入到数据库中。

3、Server.Execute
  
    Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
  
    这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。

Server.Execute,只有WEB服务器采用IIS5.0或更高版本时才有效。 其用法为:Server.Execute("URL")

     功能:停止执行当前页面,将执行控制权转到URL所指定的新页面中,用户的当前环境(会话状态和任何当前事务状态)将传递 到新页面,待新页面执行完后,控制权将返回到原始页面,并继续执行原始页面中Execute方法之后的语句。

  该方法的功能有点类似于过程调用,只不过此处调用的不是过程,而是一个完整的ASP页面。

被调用的ASP页面相当于是调用页面的一部分。

    例如:若要根据客户端语系的不同,访问不同的页面,则实现代码为:

<%
    language=Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")

if language="zh-cn" then

Server.Execute("chinese/index.asp")

else
     Server.Execute("english/index.asp")
    end if
    %>

Server.Execute 的一个很好的特点是运行条件包含的能力。通常情况下包含不能是有条件的,因为#include 指示是在脚本代码执行处理条件之前预先处理的。但用   Server.Execute 可以写出这样的代码,查看一个session变量,决定调用哪一部分代码,而不是总是装载着两部分代码。
    If Session("DoThisOrThat") = "this" Then
   Server.Execute("this.asp")
    Else
   Server.Execute("that.asp")
    End If

4.Server.Execute(”another.aspx”)和Server.Transfer(”another.aspx”)区别:  
Execute是从当前页面转移到指定页面,并将执行返回到当前页面  
Transfer是将执行完全转移到指定页面

总结:
在网络状态较好的情况下,Redirect(url)方法效率最高!! 可重定向到同一台或非同一台服务器上的aspx或非aspx(html)资源
Server.Transfer方法和Server.Execute方法最灵活!! 但只能转到同一Application目录下,也有可能导致不期望的结果发生
Server.Execute方法占用资源最多.

Server.Execute 可以解决动态include包含的问题。

转载于:https://www.cnblogs.com/liangsetian/archive/2011/07/15/2107460.html

Response.Redirect ,Server.Transfer ,Server.Execute, 的区别(比较)相关推荐

  1. Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化

    1.Response.Redirect(): Response.Redirect方法导致浏览器链接到一个指定的URL.当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指 ...

  2. Response.Redirect(),Server.Transfer(),Server.Execute()的区别

    Response.Redirect(),Server.Transfer(),Server.Execute()的区别 1.Response.Redirect(): Response.Redirect方法 ...

  3. 一起谈.NET技术,asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别...

    Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm ...

  4. Response.Redirect、 Server.Transfer、Server.Execute三者区别

    (1)Response.Redirect简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.client->server->client->server->client ( ...

  5. Response.Redirect ,Server.Excute和Server.Transfer区别详解

    Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm ...

  6. Response.Redirect和Server.Transfer的区别

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

  7. Server.Transfer VS Response.Redirect

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

  8. Server.Transfer 和Response.Redirect 比较

    作者:卡尔·穆尔 原著:Developer.com 翻译:陈梦 如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个页面,而另 ...

  9. Server.Transfer 和 Response.Redirect 的用法

    在ASP.NET中,在后台传值方式目前大多都是用 Response.Redirect("页面地址") 来重定向页面的,但是现在还有一种方式也可以达到重定向页面的作用,而且在某些时刻 ...

最新文章

  1. Benchmarking of long-read correction methods长期校正方法的基准测试
  2. ar9344 9382 8035 编程器固件_沈阳熔铜炉设计,紧固件加热炉_宏祥电炉
  3. SwiftUI之如何使用@EnvironmentObject在视图之间共享数据
  4. ui5 resource file 404 error
  5. 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)
  6. total video converter 绿色_志愿服务清理杂草 牵手绿色生态文明
  7. 深入理解ARM体系架构(S3C6410)---PWM实例
  8. 35岁学python爬虫_35岁码农的机器学习入门之路-python篇
  9. Maven 3 常见错误
  10. C++中“强制转换”的四大天王
  11. 如何获取HTML元素所对应的javascript对象?
  12. viper4android 机顶盒,利用VIPer53封装上系统实现经济型机顶盒供电
  13. 数据中心机房搬迁施工技术方案
  14. chrome的APP模式与全屏模式 --app --kiosk
  15. javascript网页设计期末作业 购物网站
  16. 如何使用DD-WRT增强Wi-Fi网络信号并增加范围
  17. 【简单图形解释】刚体上任意一点速度与刚体角速度的关系
  18. 效果炸了,Drawable 实现红鲤鱼动画,点哪儿游哪儿(下)
  19. 浅谈response.setHeader()用法
  20. ABB KUC321AE HIEE300698R0001、KUC755AE106 3BHB005243R0106、KUC711AE 3BHB004661R0001、KUC720AE01

热门文章

  1. intel服务器芯片组介绍,Intel芯片组的简介
  2. computed get set 传参_ES6 的 Set 与 Map深入理解
  3. python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...
  4. 如何通过Port-isolate实现二层网络相互隔离
  5. DataWorks功能实践速览
  6. 如何让进口商品拥有正品“身份证”?解析区块链技术的应用
  7. 三消也玩策略?这款游戏没那么简单——《妙连千军》
  8. 机器学习将在游戏开发中的6种应用
  9. 消息称苹果下代iPhone、iPad产品都将采用钛合金
  10. Linux复习资料——MySQL-client-5.6.50-1.el7.x86_64与MySQL-server-5.6.50-1.el7.x86_64包安装MySQL全过程