我有以下的应用程序特定网址
~/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);
有没有更简单的方法来实现这个目标..?
答案 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;
}
}