Как получить абсолютный URI относительного URI? - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть страница с относительным путем "~ / pages / mypage.aspx".

Я пытался использовать VirtualPathUtility.ToAbsolute (@ "~ / pages / mypage.aspx") в надежде получить абсолютный URI, но он возвращает только тот же относительный путь.

Как я могу получить абсолютное URI из этого относительного URI?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Я использовал этот метод:

private static string GetAbsoluteUrl(string relativeUrl)
    {
        var applicationUrl = String.Empty;

        // remove ~
        if (relativeUrl.StartsWith("~"))
        {
            applicationUrl = relativeUrl.Substring(1);
        }

        applicationUrl = (HttpContext.Current.Request.ApplicationPath + applicationUrl)
            .Replace("//", "/");

        var baseUrl = String.Format("{0}://{1}:{2}",
                                    HttpContext.Current.Request.Url.Scheme,
                                    HttpContext.Current.Request.Url.Host,
                                    HttpContext.Current.Request.Url.Port);

        return baseUrl + applicationUrl;
    }
0 голосов
/ 06 апреля 2011
 public static string ResolveUrl(string originalUrl)
    {
        if (originalUrl == null)
            return null;

        // *** Absolute path - just return
        if (originalUrl.IndexOf("://") != -1)
            return originalUrl;

        // *** Fix up image path for ~ root app dir directory
        if (originalUrl.StartsWith("~"))
        {
            string newUrl = "";
            if (HttpContext.Current != null)
                newUrl = HttpContext.Current.Request.ApplicationPath +
                      originalUrl.Substring(1).Replace("//", "/");
            else
                // *** Not context: assume current directory is the base directory
                throw new ArgumentException("Invalid URL: Relative URL not allowed.");

            // *** Just to be sure fix up any double slashes
            return newUrl;
        }

        return originalUrl;
    }

Взято с http://www.west -wind.com / weblog / posts / 154812.aspx

...