Я действительно удивлен, что не существует собственного метода .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('/');
}