看了网上的解答,自己总结了一下
Response.Redirect 原理:
server.transfer原理:
浏览器ASP文件请求—>服务器执行—>遇到Server.Transfer语句—>服务器转向新的文件
1.Response.Redirect 是从浏览器重定向到另一页,而server.transfer则是使用服务端的方法将用户定向到另一页.
2.server.transfer 的优点是可以将页面参数方便的传递到指定页面,服务端只是将上下文传输到另一页,你可以共享页之间的信息,不会占用较多的http请求,减少客户端对服务端的请求,因些可以减轻服务端的压力,使你的服务器运行更快。response.redirect 则要执行额外的往返过程,这会影响性能,通常在做指向外部的web链接时使用.
3.server.transfer吸局限于同一服务端的同一站点的运行,而Response.Redirec则不是.
注意问题:
server.transfer跳转到其它页面,浏览器上的URL地址不会变,要是刷新此页面会有意外的bug,不能使用server.transfer重定向到.asp或.asmx页。
还有,Server.Transfer方法还有二个参数的重载方法——
"preserveForm"如果你将其设置为True(默认情况是False),
使用一个状态比如:Server.Transfer("WebForm2.aspx", True),
现存的请求字符串和所有的Form里的变量将被保持并提交到你的
目标页。
但是必须注意的是,这里有一个奇怪的Bug(微软为什么有这样
的Bug)。当你使用两个参数的重载方法试图迁移form和请求字符
串的时候会有可能产生错误。
非官方的解决办法是将要被跳转的画面的enableViewStateMac
的属性设置为 True , 然后再设回 False.