Существует ли встроенный URL для создания абсолютного (полностью определенного) URL-адреса из относительного пути, например «~ / page.aspx», с учетом текущего URL-адреса? - PullRequest
5 голосов
/ 08 декабря 2010

Сценарий: у меня есть относительный URL приложения, например "~ / path / to / page.aspx? Query = string".Мне нужно программно создать веб-запрос к этой странице и в настоящее время использовать WebRequest.Create.Проблема в том, что WebRequest.Create требует полностью определенного URL, включая протокол / домен / порт и т. Д.

У меня есть доступ к текущему объекту Request.Url, но, похоже, нет простого способа получить простобазовый URL, содержащий протокол (HTTP против HTTPS), а также любые номера портов и путь к приложению.

Я имею в виду всю информацию там, поэтому, если потребуется, я мог бы просто взять все частии объединить их, но кажется, что это может быть подвержено ошибкам, и было бы здорово иметь что-то встроенное, что хорошо протестировано для работы.Page.ResolveUrl почти доходит до меня, но ему не хватает протокола и домена / порта.

1 Ответ

9 голосов
/ 08 декабря 2010

Попробуйте System.Web.VirtualPathUtility.ToAbsolute(). Я использовал это (хотя и в VB.NET, но я уверен, что есть эквивалент C #) с большим успехом. Он может даже переводить только базовый виртуальный путь (т. Е. System.Web.VirtualPathUtility.ToAbsolute("~") превратится в базовый URL вашего приложения).

EDIT

Как насчет Request.Url.GetLeftPart(UriPartial.Authority)? Это должно получить части Scheme и Authority Url (которые я считаю протоколом и доменом, на который вы ссылаетесь). Вот документ MSDN: http://msdn.microsoft.com/en-us/library/system.uri.getleftpart.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...