Server.Transfer()方法服务器端重定向后,相对路径有关问题

Server.Transfer()方法服务器端重定向后,相对路径问题

有关Server.Transfer()方法找不到路径的问题

浏览器端url地址为http://127.0.0.1:1400/Page/Page1.aspx,发送请求到服务器端,进行服务器端跳转,Server.Transfer("/Page/Page2.aspx"),/表示网站的根目录。当Page2.aspx的html代码发送到浏览器端后,浏览器端地址栏的url地址已然是Page1.aspx,在浏览器端接受的html代码中,img,frame等资源文件如果使用的是相对路径,如../Resource/Image/Image1.jpg,原来是以Page2.aspx所在目录为基准的,则此时是以/Page/Page1.aspx为基准的,可能造成资源文件无法读取,所以,为保持可移植性,img等资源的地址最好是以网站根目录为基准的相对路径。

如果在Test.aspx的Page_Load方法中调用Transfer方法,其实,Server.Transfer("Login.aspx")方法就是在当前的输出流缓存中增加要输出html代码,其结果是在浏览器端地址栏仍然是……/Test.aspx,接受到的数据包含两对<html></html>标签,一对是Test.aspx的输出,另一对是Login.aspx的输出。所以,Transfer方法是在当前的输出流中添加数据,其前边的Response.write中的数据都会发送到客户端。而Redirect方法不同,会发送标记码给客户端浏览器并且重定向,所以,其前边的Response.write()到缓存中的数据都不会发送到浏览器端。