2013-07-02 54 views

回答

6

您可以使用

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

它在asp.net中工作,我不確定MVC,但它也應該工作。

+0

這主要適用,但要注意非默認端口。例如,如果你在本地運行這個程序,例如你的開發網站運行的是'localhost:12345',這隻會給你'http:// localhost/PDF/MyFile.pdf',這顯然不起作用。 –

+0

關閉,但您應該使用'Request.Url.Authority'而不是'Request.Url.Host'來處理需要用戶名和密碼的非標準端口和URL。 –

7

可以使用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} 
+4

我認爲@chamara是相當詢問如何獲取絕對URL,而不是如何添加兩個字符串並將其轉換爲Uri。 –

+0

@KamilT:所以,只需使用'Uri absolute = new Uri(Request.RawUrl);'。 –

-4
String absolutePath = Server.MapPath(myRelativePath); 
+0

Server.MapPath用於查找某個url的服務器文件路徑。 – pauloya

+0

標明原因的問題顯然是關於相對路徑,不是絕對路徑 – Talon

+0

其他評論說了我的話。 –

3

下面的擴展方法爲我工作:

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。

0

返回新的System.Uri(Page.Request.Url,ResolveClientUrl( 「〜/相對/ path.aspx」))。絕對URI

相關問題