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