C# 将相对路径转换为完整URL
我的主要领域是。我有一个像/PDF/myfile.PDF这样的文件的相对路径 我需要将此相对路径转换为完整URL。像下面这样 我在下面试过,但没有成功 VirtualPath实用性.ToAbsolute(“/PDF/myfile.PDF”)您可以使用来组合绝对URI和相对路径: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");
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应用程序并不总是托管在域的最高级别,如果您现在不考虑这种可能性,您就是在自食其果。