Response.Redirect与Server.Transfer区别

版权声明:转载请注明出处:http://blog.csdn.net/Cool__King https://blog.csdn.net/Cool__King/article/details/81632100

Response.RedirectServer.Transfer的区别

 

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

 

 

Response.Redirect :Response.Redirect 会将地址输出至浏览器,执行重定向操作。但是请注意,在程序执行到Response.Redirect("页面地址") 语句时,会立即中断当前页面的生命周期,直接向客户端返回信息,让客户端进行重定向操作。这个时候页面URL将会显示重定向后的地址。

 

 

Server.Transfer :Server.Transfer 是一个很奇特的方法。当使用 Server.Transfer 方法重定向页面时,虽然页面也会被重定向至指定页,但是并不会在浏览器的URL上体现出来,并且若重定向的页面后有参数,也不会显示在浏览器的URL上。

简单的阐述:

Response.Redirect 是通知客户端浏览器(客户端浏览器,地址栏地址发生变化)跳转的。而Server.Transfer是在服务端跳转(客户端浏览器,地址栏地址不发生变化)简单的来说,Response.Redirect需要多走一个来回。而,Server.Transfer能少走一个。Response.Redirect 对于客户端浏览来说,速度可能会慢点,但对于服务端能少些负担;而Server.Transfer对于客户端浏览会快一些(因为少走一个来回),但服务器负担会大一些。

 

 

数据保密性:
1、Response.Redirect后地址会变成跳转后的页面地址。
2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。
传递的数据量(即:网址后附带的参数):
利用网址来传递数据,必须注意的是网址的编码,要编码的原因是,有此字符有特殊意义,例如:&,它是参数的分隔符号,解决的方法是必须修改: 调用Server.URLEncode(变量)对要传递的数据加以编码。
1、Response.Redirect能够传递的数据以2KB为限。
2、传递的数据超过2KB时,务必使用Server.Transfer。

转载: Response.RedirectServer.Transfer区别在哪儿?

04-02

转载: Response.Redirect和Server.Transfer的区别在哪儿?rnrn痞子蔡~ 2008-01-15 13:38rnrn1、Response.Redirect()rn Response.Redirect方法导致浏览器链接到一个指定的URL。rn当Response.Redirect()方法被调用时,它会创建一个应答,rn应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。rn浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。rn 这就是说,使用Response.Redirect方法时重定向操作发生在客户端,rn总共涉及到两次与服务器的通信(两个来回):rn第一次是对原始页面的请求,得到一个302应答,rn第二次是请求302应答中声明的新页面,得到重定向之后的页面。rnrn2、Server.Transfer ()rn Server.transfer是IIS 5.0新增加的一个功能。rn它解决了Response.Redirect的两个重要的缺陷:rn1)在Response.Redirect中,我们得不到任何第一页的输出rn2)Response.Redirect会丢失rnrequest中的所有属性,当然我们可以通过一些其他的办法,比如session来搞定,rn可是,有些页的参数是在request中传过来的,这样的话,就不行了rn3) Response.Redirect需要client端再发起一个请求。rnserver.transfer就很好地解决了这些问题。它是从server端直接向下一页发起请求,rn不需要client再次发送请求.rn如果你的网页非常依赖response.redirect,这个小小的改变可以提高将近25%的效率。(根据微软文档). Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。rn调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,rn但新的ASPX页面仍使用前一ASPX页面创建的应答流。rn 如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,rn因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。rn默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,rn但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。rn同时,使用Server.Transfer时应注意一点:rn目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(Machine Authentication Check,MAC)rn认为新页面的ViewState已被篡改。rn因此,如果要保留原始页面的表单数据和查询字符串集合,rn必须把目标页面Page指令的 EnableViewStateMac属性设置成False。rnserver.Transfer()有一个不足就是:rn当用户在a.aspx中提交了一个表单,然后用Server.Transfer()进入 b.aspx,rn这时如果用户刷新一下页面,浏览器便会问用户是否“重试”发送表单,rn如果用户点击“是”,那么,表单中的数据被重新发送到服务器。rn如发送表单的作用就是为了向数据库中插入一条记录,rn结果导不希望发生的事——同一表单被多次加入到数据库中。rnrn3、Server.Execute rn Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,rn当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。rn 这种页面导航方式类似于针对ASPX页面的一次函数调用,rn被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,rn所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。rnrn************这里我有一问:Server.Execute能做什么?*********** 论坛

没有更多推荐了,返回首页