1

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

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

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

我在下面试过但没有奏效

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

4

4 回答 4

8

以下扩展方法对我有用:

 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。

于 2015-03-26T04:21:11.567 回答
8

您可以使用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}
于 2013-07-02T08:46:32.683 回答
7

您可以使用

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

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

于 2013-07-02T08:47:21.683 回答
0

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

于 2017-10-31T13:19:20.383 回答