我真的很惊讶,没有本地.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('/');
}
Run Code Online (Sandbox Code Playgroud)