从应用程序路径生成特定于域的URL的最简单方法是什么?

时间:2013-06-29 09:17:46

标签: c# asp.net

我有以下的应用程序特定网址

~/Default.aspx
~/Manage/Page.aspx
~/Manage/Account/Default.aspx

我真的不知道这些路径究竟叫什么。

现在我需要它们转换为特定于域的完整URL。 URL中没有../../../之类的内容。我想要像

这样的网址
http://www.example.com/Default.aspx
http://www.example.com/Manage/Page.aspx
http://www.example.com/Manage/Account/Default.aspx

目前我正在按照以下方式进行此操作(假设我有HttpRequest对象)

Request.Url.Host + path.Substring(1);

有没有更简单的方法来实现这个目标..?

3 个答案:

答案 0 :(得分:1)

string relative = "~/Manage/Account/Default.aspx";
string absoluteUrl = new Uri(Request.Url, VirtualPathUtility.ToAbsolute(relative)).AbsoluteUri;

答案 1 :(得分:1)

另一种方法是在应用设置中定义您的域名,如

<add name="WebsiteURL" value="http://www.example.com/"/>

现在你的c#代码就像你的ASPX一样

<%=Config.WebsiteURL %>Default.aspx
<%=Config.WebsiteURL %>Manage/Page.aspx

答案 2 :(得分:0)

我从Darin的解决方案中设计了以下静态方法。现在我可以像Utilities.GetAbsoluteURL("~/abc/xyz")一样使用它。

public static class Utilities
{
    public static string GetAbsoluteURL(string relativePath)
    {
        return new Uri(HttpContext.Current.Request.Url, VirtualPathUtility.ToAbsolute(relativePath)).AbsoluteUri;
    }
}