将相对路径转换为完整URL

时间:2013-07-02 08:42:21

标签: c# asp.net asp.net-mvc path

我的主要域名为http://redrocksoftware.com.au。我有一个文件的相对路径,如/PDF/myfile.pdf

我需要将此相对路径转换为完整的URL。如下所示。

http://redrocksoftware.com.au/PDF/myfile.pdf

我在下面尝试但没有工作

VirtualPathUtility.ToAbsolute( “/ PDF / myfile.pdf”)

4 个答案:

答案 0 :(得分:7)

您可以使用Uri Class来组合绝对URI和相对路径:

Uri absolute = new Uri("http://redrocksoftware.com.au/");
Uri result = new Uri(absolute, "/PDF/MyFile.pdf");
// result == {http://redrocksoftware.com.au/PDF/MyFile.pdf}

答案 1 :(得分:6)

您可以使用

string FullUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + "/PDF/MyFile.pdf"

它适用于asp.net,我不确定MVC,但它也应该有用。

答案 2 :(得分:4)

以下扩展方法对我有用:

 public static class Extensions
 {
    /// <summary>
    /// Turns a relative URL into a fully qualified URL.
    /// (ie http://domain.com/path?query) 
    /// </summary>
    /// <param name="request"></param>
    /// <param name="relativeUrl"></param>
    /// <returns></returns>
    public static string GetFullUrl(this HttpRequest request, string relativeUrl) {
        return String.Format("{0}://{1}{2}",
                        request.Url.Scheme,
                        request.Url.Authority,
                        VirtualPathUtility.ToAbsolute(relativeUrl));
    }
 }

按如下方式使用:

 HttpContext.Current.Request.GetFullUrl("~/MyOtherPage.aspx");

也可以使用虚拟目录,而且不需要MVC。

答案 3 :(得分:0)

返回新的System.Uri(Page.Request.Url,ResolveClientUrl(&#34;〜/ relative / path.aspx&#34;))。AbsoluteUri