MyException - 我的异常网
当前位置:我的异常网» 编程 » Response.Redirect(),Server.Transfer(),Server.Exe

Response.Redirect(),Server.Transfer(),Server.Execute()的差异.docx

www.MyException.Cn  网友分享于:2015-08-26  浏览:20次
Response.Redirect(),Server.Transfer(),Server.Execute()的区别.docx

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("another.aspx") Server.Transfer("another.aspx") 区别 : 

Execute 是从当前页面转移到指定页面 , 将执行返回到当前页面  

Transfer 将执行完全转移到指定页面

 

 

总结:

网络状态较好 的情况下 ,Redirect(url) 方法效率最高 !! 可重定向到同一台或非同一台 服务器上的 aspx 或非 aspx html )资源

Server.Transfer 方法和 Server.Execute 方法最灵活 !! 只能转到同一 Application 目录下 ,也有可能导致不期望的结果发生

Server.Execute 方法占用资源最多 .

 

 

文章评论

团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员必看的十大电影
程序员必看的十大电影
每天工作4小时的程序员
每天工作4小时的程序员
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
一个程序员的时间管理
一个程序员的时间管理
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员都该阅读的书
程序员都该阅读的书
我是如何打败拖延症的
我是如何打败拖延症的
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
旅行,写作,编程
旅行,写作,编程
如何成为一名黑客
如何成为一名黑客
鲜为人知的编程真相
鲜为人知的编程真相
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
中美印日四国程序员比较
中美印日四国程序员比较
10个调试和排错的小建议
10个调试和排错的小建议
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
编程语言是女人
编程语言是女人
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Java程序员必看电影
Java程序员必看电影
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
代码女神横空出世
代码女神横空出世
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
漫画:程序员的工作
漫画:程序员的工作
老程序员的下场
老程序员的下场
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员和编码员之间的区别
程序员和编码员之间的区别
 程序员的样子
程序员的样子
那些争议最大的编程观点
那些争议最大的编程观点
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
我的丈夫是个程序员
我的丈夫是个程序员
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有