Получение полного URL-адреса из URL-адреса с тильдой (~)
Я пытаюсь получить типичный URL-адрес asp.net, начинающийся с знака тильды ('~'), чтобы проанализировать полный точный url, начинающийся с "http:"
У меня есть эта строка "~/PageB.aspx"
И я хочу сделать его "http://myServer.com/PageB.aspx"
Я знаю, что существует несколько методов для анализа URL-адресов и получения разных путей к серверу и приложению и тому подобное. Я попробовал несколько, но не получил результат, который я хочу.
Ответы
Ответ 1
Если вы находитесь в обработчике страниц, вы всегда можете использовать метод ResolveUrl
для преобразования относительного пути к определенному серверу пути. Но если вы хотите также "http://www.yourserver.se", вам придется добавить к нему Request.Url.Scheme
и Request.Url.Authority
.
Ответ 2
Попробуйте
System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath");
Существуют различные способы, доступные в ASP.NET, которые мы можем использовать для разрешения относительных путей к ресурсу на стороне сервера и обеспечения его доступности на стороне клиента. Я знаю 4 способа -
1) Request.ApplicationPath
2) System.Web.VirtualPathUtility
3) Page.ResolveUrl
4) Page.ResolveClientUrl
Хорошая статья: Различные подходы к разрешению URL-адресов в ASP.NET
Ответ 3
string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
Ответ 4
Этот метод выглядит для меня самым приятным. Нет строковых манипуляций, он может переносить как относительные, так и абсолютные URL-адреса в качестве входных данных, и использует ту же схему, полномочия, порт и корневой путь, что и текущий текущий запрос:
private Uri GetAbsoluteUri(string redirectUrl)
{
var redirectUri = new Uri(redirectUrl, UriKind.RelativeOrAbsolute);
if (!redirectUri.IsAbsoluteUri)
{
redirectUri = new Uri(new Uri(Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath), redirectUri);
}
return redirectUri;
}