2012-05-22 31 views
2

我创建了几个虚拟导向器,我希望能够从当前的http请求中获取url。绝对URL不适用于虚拟目录?

例如:

http://www.site.com/app_1/default.aspx ===> http://www.site.com/app_1/

http://www.site.com/app_2/default.aspx ===> http://www.site.com/app_2/

....

http://www.site.com/app_n/default.aspx ===> http://www.site.com/app_n/

我的代码:

string urlApp = HttpContext.Current.Request.Url.AbsoluteUri.ToString(); 
    urlApp = urlApp.Substring(0, urlApp.LastIndexOf('/') + 1); 

,我试图

string urlApp = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/"; 

在本地主机的伟大工程:http://localhost:2468/test.aspx结果http://localhost:2468/

,但是当通过虚拟目录http://myhost/app_1/test.aspx结果存取http://myhost/

?我怎样才能http://myhost/app_1/

+0

你有没有试过看看'HttpContext.Current.Request.Url.AbsoluteUri.ToString();'实际返回什么?也许它只是返回'http:// myhost/app_1 /',然后你的子字符串是删除app_1部分? – seekerOfKnowledge

回答

5
HttpContext.Current.Request.ApplicationPath 

是你需要的路线到你的虚拟目录。将它追加到你已经获得的URL中,并且你将成为赢家。像

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath 

应该可以工作,但要注意尾部的斜线。

+0

是的,它的工作原理非常完美。谢谢 –

+0

@dumitru请投票答复以及 – Ravia