Получить абсолютный URL-адрес из относительного пути (метод с рефакторингом)

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

Думаю, мне осталось только автоматически выбрать протокол вместо его жесткого кодирования (http / https). Что еще мне не хватает (предупреждения, производительность и т. Д.)?

public static string GetAbsoluteUrl(string url)
    {
        //VALIDATE INPUT FOR ALREADY ABSOLUTE URL
        if (url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) 
           || url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
        { 
            return url;
        }

        //GET PAGE REFERENCE FOR CONTEXT PROCESSING
        Page page = HttpContext.Current.Handler as Page;

        //RESOLVE PATH FOR APPLICATION BEFORE PROCESSING
        if (url.StartsWith("~/"))
        {
            url = page.ResolveUrl(url);
        }

        //BUILD AND RETURN ABSOLUTE URL
        return "http://" + page.Request.ServerVariables["SERVER_NAME"] + "/" 
                         + url.TrimStart('/');
    }
56
задан SteveC 19 April 2013 в 11:58
поделиться