我真的很驚訝,沒有本地.NET方法從相對URL獲取絕對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('/');
}
一個小建議。您應該使用String.Format,而不是在最後連接URL位。 – Bernd 2010-09-10 05:22:16