Je suis vraiment surpris qu'il n'est pas natif .NET méthode pour obtenir une url absolue à partir d'une url relative. Je sais que cela a été discuté à maintes reprises, mais n'ont jamais de trouver une méthode satisfaisante qui gère ce bien. Pouvez-vous aider à affiner la méthode ci-dessous?
Je pense que tout ce que je besoin de gauche est à l'auto choisissez le protocole à la place de codage en dur elle (http/https). Autre chose, je suis absent (mises en garde, les performances, etc)?
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('/');
}