将相对路径转换为完整URL

本文关键字:URL 转换 相对 路径 | 更新日期: 2023-09-27 18:20:50

我的主域是http://redrocksoftware.com.au.我有一个类似/PDF/myfile.PDF 的文件的相对路径

我需要将这个相对路径转换为完整的URL。下面这样的东西。

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

我试过下面的,但没有工作

VirtualPathUtility.ToAbsolute("/PDF/myfile.PDF")

将相对路径转换为完整URL

您可以使用Uri类来组合绝对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}

以下扩展方法对我有效:

 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。

您可以使用

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

它在asp.net中工作,我不确定MVC,但它也应该工作。

返回新的System.Uri(Page.Request.Url,ResolveClientUrl("~/report/path.aspx").AbsoluteUri