Получить основную часть URL-адреса, включая виртуальный каталог

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

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

http://www.website.com/shop/test.aspxhttp://www.website.com/shop/

http://www.website.com/test.aspxhttp://www.website.com/

http://website.com/test.aspxhttp://website.com/

Как это можно добиться?

Ответы

Ответ 1

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

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

Ответ 2

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

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

string Uri = Request.Url.AbsoluteUri;
string Output = Uri.Substring(0, Uri.LastIndexOf('/') + 1 );

Ответ 3

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

string url = (new Uri(Request.Url, ".")).OriginalString;

Ответ 4

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

Request.Url.OriginalString.Substring(0, Request.Url.OriginalString.LastIndexOf(Request.FilePath.Substring(Request.FilePath.LastIndexOf("/")))) + "/"