Получить Абсолютный 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('/');
    }

Ответы на вопрос(11)

Ваш ответ на вопрос