Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将相对路径转换为完整URL_C#_Asp.net_Asp.net Mvc_Path - Fatal编程技术网

C# 将相对路径转换为完整URL

C# 将相对路径转换为完整URL,c#,asp.net,asp.net-mvc,path,C#,Asp.net,Asp.net Mvc,Path,我的主要领域是。我有一个像/PDF/myfile.PDF这样的文件的相对路径 我需要将此相对路径转换为完整URL。像下面这样 我在下面试过,但没有成功 VirtualPath实用性.ToAbsolute(“/PDF/myfile.PDF”)您可以使用来组合绝对URI和相对路径: Uri absolute = new Uri("http://redrocksoftware.com.au/"); Uri result = new Uri(absolute, "/PDF/MyFile.pdf");

我的主要领域是。我有一个像/PDF/myfile.PDF这样的文件的相对路径

我需要将此相对路径转换为完整URL。像下面这样

我在下面试过,但没有成功

VirtualPath实用性.ToAbsolute(“/PDF/myfile.PDF”)

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

string FullUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + "/PDF/MyFile.pdf"
它在asp.net中工作,我不确定MVC,但它也应该工作。

您可以使用

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

它可以在asp.net中使用,我不确定MVC是否可以使用,但它也应该可以使用。

以下扩展方法适合我:

 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));
    }
 }

也适用于虚拟目录,您不需要MVC。

以下扩展方法对我很有效:

 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));
    }
 }

也适用于虚拟目录,您不需要MVC。

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

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

我认为@chamara是在问如何检索绝对Url,不是如何将两个字符串添加到一起并将其转换为Uri。@KamilT:所以,只需使用
Uri absolute=new Uri(Request.RawUrl)
。我认为@chamara问的是如何检索绝对url,而不是如何将两个字符串添加到一起并将其转换为Uri。@KamilT:所以,只需使用
Uri absolute=new Uri(Request.RawUrl)。这通常是有效的,但要注意非默认端口。例如,如果您在本地运行此程序,并且您的开发站点运行在类似
localhost:12345
的东西上,那么这只会为您提供
http://localhost/PDF/MyFile.pdf
,这显然不起作用。关闭,但是您应该使用
Request.Url.Authority
而不是
Request.Url.Host
来处理需要用户名和密码的非标准端口和Url。这通常是有效的,但要注意非默认端口。例如,如果您在本地运行此程序,并且您的开发站点运行在类似
localhost:12345
的东西上,那么这只会为您提供
http://localhost/PDF/MyFile.pdf
,这显然不起作用。关闭,但是您应该使用
Request.Url.Authority
而不是
Request.Url.Host
来处理需要用户名和密码的非标准端口和Url。这是唯一正确的答案
VirtualPath实用性。ToAbsolute()
包括虚拟目录,所有其他答案中都省略了该目录。您的web应用程序并不总是托管在域的最高级别,如果您现在不考虑这种可能性,您就是在自取灭亡。这是唯一正确的答案
VirtualPath实用性。ToAbsolute()
包括虚拟目录,所有其他答案中都省略了该目录。您的web应用程序并不总是托管在域的最高级别,如果您现在不考虑这种可能性,您就是在自食其果。