日期:2014-05-18  浏览次数:20391 次

求教Url转向问题:Server.Transfer()和RewritePath()究竟有何区别???
问题是这样的:

现在我要做一个url转向的功能,在Global.asax文件的Application_BeginRequest中写入将Http请求中的url截取并替换成另一个url的代码,以实现url重写功能。

现在我所了解的比较可行的转向方法有三种:Response.Redirect、Server.Transfer和RewritePath。

因为要实现在服务器内部直接转向,所以Response.Redirect已经排除掉了,现在剩下Server.Transfer和RewritePath可选。

刚开始我是在页面的page_load里面用Server.Transfer做的,没发现什么问题。但是现在把代码放到Global.asax文件中就出现了这样一个莫名其妙的问题:转向功能正常,但是在转到一个新页面后,新页面有时候能显示出来有时候却不能显示!说“Internet Explorer 无法显示该网页”!反复后退再点击试验,依然如故,而且不能显示网页的时候几乎多于能显示的时候,更令我不解的是,调试期间不报任何错误。

但是换成RewritePath方法就没问题了,能跟Server.Transfer实现一样的隐藏真实url的功能,我已经考虑用RewritePath方法了,但是看了看msdn上写着“RewritePath 用在无 Cookie 会话状态中”,有点不明白,这句话的意思是不是在转到新页面后,新页面中就不能获取前页的状态会话了?

搜了半天也没找到Server.Transfer和RewritePath的区别,故特此来问问诸位,希望各位能给个详尽的解释以供参考。

越详细越好!多谢了!

------解决方案--------------------
以前看那的
贴你看看吧

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

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

切换对象:

1、Response.Redirect可以切换到任何存在的网页。

2、Server.Transfer只能切换到同目录或者子目录的网页。

数据保密:

1、Response.Redirect后地址会变成跳转后的页面地址。

2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。

传递的数据量(网址后附带的参数):

1、Response.Redirect能够传递的数据以2KB为限。

2、传递的数据超过2KB时,务必使用Server.Transfer。
------解决方案--------------------
12楼根本就没看清题目要求嘛……