2

我创建了几个虚拟导演,我希望能够从当前的 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/

4

1 回答 1

5
HttpContext.Current.Request.ApplicationPath 

是获取到虚拟目录的路由所需要的。将其附加到您已经获得的 URL 上,您就赢了。就像是

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

应该可以,但要注意尾部的斜杠。

于 2012-05-22T14:08:50.260 回答