如何将相对网址转换为完整网址?
时间:2020-03-06 14:39:06 来源:igfitidea点击:
通过一个示例可能更容易解释这一点。我正在尝试找到一种方法来转换相对网址,例如" /Foo.aspx"或者"〜/ Foo.aspx"转换为完整的网址,例如http://localhost/Foo.aspx。这样,当我部署到测试或者阶段时(在该站点上运行的域有所不同),我将获得http://test/Foo.aspx和http://stage/Foo.aspx。
有任何想法吗?
解决方案
玩这个(从这里修改)
public string ConvertRelativeUrlToAbsoluteUrl(string relativeUrl) { return string.Format("http{0}://{1}{2}", (Request.IsSecureConnection) ? "s" : "", Request.Url.Host, Page.ResolveUrl(relativeUrl) ); }
使用.NET Uri类来组合相对路径和主机名。
http://msdn.microsoft.com/en-us/library/system.uri.aspx
这是我的助手功能
public string GetFullUrl(string relativeUrl) { string root = Request.Url.GetLeftPart(UriPartial.Authority); return root + Page.ResolveUrl("~/" + relativeUrl) ; }
这是我创建的用于进行转换的辅助函数。
//"~/SomeFolder/SomePage.aspx" public static string GetFullURL(string relativePath) { string sRelative=Page.ResolveUrl(relativePath); string sAbsolute=Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery,sRelative); return sAbsolute; }