2010-08-09 123 views
3

我正在使用IIS Url Rewrite模块重写我的ASP.Net Web应用程序的URL。网址正在从改写:Response.Redirect页面上Url重写的URL Url重写模块

http://domain/version/page.aspx

http://domain/company/page.aspx

和浏览直接使用绝对路径,当它工作得很好。使用相对路径在应用内导航时会出现问题。 任何种类的相对路径。

所有相对路径重定向到相应的http://domain/version/page.aspx而不是它应该去的http://domain/COMPANY/page.aspx

我解决了很多问题的,加入这一行的BeginRequest事件在Global.asax中:

Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs) 
    HttpContext.Current.RewritePath(HttpContext.Current.Request.Url.AbsolutePath, True) 
End Sub 

本质上讲,它只是基础重建所请求的URL的虚拟路径。

但即使使用该Response.Redirect STILL重定向到实际路径而不是虚拟路径。

所以这个代码:Response.Redirect("~/test.aspx")会重定向到domain/Version/test.aspx而不是domain/Company/test.aspx

如何使的Response.Redirect重定向到的,而不是实际的路径(domain/VERSION/test.aspx

由于虚拟路径(domain/COMPANY/test.aspx)。

回答

2

两种选择。你可以这样做:

Response.Redirect("/company/test.aspx") 

Response.Redirect("http://domain/company/test.aspx") 

这是你必须处理,如果你要使用他们的使用动态URL的挑战之一,和一个。

也许最好的解决方案是编写一个函数,让你所有的页面都能看到这样做。这样你可以只写:

MyRedirectFunction("test.aspx") 

和所有的细节都在幕后。

+0

这是我正在往下走的路......悲伤地看到它是唯一的好路径。 – 2010-08-09 18:07:32