绝对URL不能与虚拟目录一起使用?

时间:2012-05-22 13:51:52

标签: c# asp.net url iis

我创建了几个虚拟导演,我希望能够从当前的http请求中获取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) + "/";

在localhost中效果很好:http://localhost:2468/test.aspx结果http://localhost:2468/

,但是当通过虚拟目录http://myhost/app_1/test.aspx访问http://myhost/

我怎样才能获得http://myhost/app_1/

1 个答案:

答案 0 :(得分:5)

HttpContext.Current.Request.ApplicationPath 

是获取虚拟目录路径所需的内容。将其附加到您已经获得的网址上,然后您就会成为赢家。像

这样的东西
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath

应该可以工作,但要注意尾随斜杠。