我的主域是http://redrocksoftware.com.au。我有一個像/PDF/myfile.pdf文件的相對路徑將相對路徑轉換爲完整URL
我需要將此相對路徑轉換爲完整的URL。像下面的東西。
http://redrocksoftware.com.au/PDF/myfile.pdf
下面我試過,但沒有工作
VirtualPathUtility.ToAbsolute( 「/ PDF/myfile.pdf」)
我的主域是http://redrocksoftware.com.au。我有一個像/PDF/myfile.pdf文件的相對路徑將相對路徑轉換爲完整URL
我需要將此相對路徑轉換爲完整的URL。像下面的東西。
http://redrocksoftware.com.au/PDF/myfile.pdf
下面我試過,但沒有工作
VirtualPathUtility.ToAbsolute( 「/ PDF/myfile.pdf」)
您可以使用
string FullUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + "/PDF/MyFile.pdf"
它在asp.net中工作,我不確定MVC,但它也應該工作。
可以使用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}
我認爲@chamara是相當詢問如何獲取絕對URL,而不是如何添加兩個字符串並將其轉換爲Uri。 –
@KamilT:所以,只需使用'Uri absolute = new Uri(Request.RawUrl);'。 –
下面的擴展方法爲我工作:
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。
返回新的System.Uri(Page.Request.Url,ResolveClientUrl( 「〜/相對/ path.aspx」))。絕對URI
這主要適用,但要注意非默認端口。例如,如果你在本地運行這個程序,例如你的開發網站運行的是'localhost:12345',這隻會給你'http:// localhost/PDF/MyFile.pdf',這顯然不起作用。 –
關閉,但您應該使用'Request.Url.Authority'而不是'Request.Url.Host'來處理需要用戶名和密碼的非標準端口和URL。 –