получить основную часть URL, включая виртуальный каталог - PullRequest
14 голосов
/ 03 ноября 2011

Я работаю с .net 4.0 c #.

Я хочу получить URL-адрес из текущего http-запроса, включая любой виртуальный каталог. Так, например (запрос и искомое значение):

http://www.website.com/shop/test.aspx -> http://www.website.com/shop/

http://www.website.com/test.aspx -> http://www.website.com/

http://website.com/test.aspx -> http://website.com/

Как этого добиться?

Ответы [ 4 ]

30 голосов
/ 03 ноября 2011

Это то, что я использую

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath;
4 голосов
/ 03 ноября 2011

Request.Url должен содержать все, что вам нужно.На этом этапе нужно проверить строку и то, что вы предпочитаете извлечь из нее.Я использовал AbsoluteUri раньше, и это работает.

Этот пример не защищает от ошибок, но вы должны быть в состоянии выяснить, что вам нужно из этого:

string Uri = Request.Url.AbsoluteUri;
string Output = Uri.Substring(0, Uri.LastIndexOf('/') + 1 );
1 голос
/ 20 февраля 2013

Это решение может работать и короче:

string url = (new Uri(Request.Url, ".")).OriginalString;
0 голосов
/ 04 ноября 2011

Это должно работать

Request.Url.OriginalString.Substring(0, Request.Url.OriginalString.LastIndexOf(Request.FilePath.Substring(Request.FilePath.LastIndexOf("/")))) + "/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...