Подтвердить что ты не робот

Получение полного URL-адреса из URL-адреса с тильдой (~)

Я пытаюсь получить типичный URL-адрес asp.net, начинающийся с знака тильды ('~'), чтобы проанализировать полный точный url, начинающийся с "http:"

У меня есть эта строка "~/PageB.aspx"

И я хочу сделать его "http://myServer.com/PageB.aspx"

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

4b9b3361

Ответ 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;
}