如何将相对网址转换为完整网址?

时间: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;
}