2009-10-22 20 views
2

我有一個簡單的網絡應用程序,其中包含一個名爲文件的網站根目錄。文檔內部是一個名爲test.doc的文件。路徑和文件存儲在數據庫中,當運行Web應用程序時,它讀取值並創建與test.doc的正確鏈接,在這種情況下,它是http://localhost/documents/test.doc。當我發佈到開發服務器上的文件夾時會發生此問題。當我這樣做時,我的網址被破壞,因爲它變成了這樣的東西,http://development/testapp/documents/test.doc。這失敗了,因爲它正在尋找test.doc在http://development/documents/test.doc。我不知道如何解決這個問題。如何在從本地部署到開發服務器時在asp.net中獲取正確的路徑?

我目前這樣做的標記,但我不確定如何使用RESOLVEURL或ResolveClientUrl它:

<a runat="server" href='<%# Eval("url") %>'><%#Eval("title") %></a> 

回答

1

嘗試使用ResolveUrl功能來正確映射。

ResolveUrl("~/documents/test.doc"); 
+0

我想提出一個更新的帖子。 – Xaisoft

0

您可以使用ResolveClientUrl方法來正確映射URL。從數據庫中獲取URL,並在「〜/」之前加入ResolveClientUrl。

+0

ResolveUrl和ResolveClientUrl有什麼區別? – Xaisoft

+0

ResolveUrl方法返回相對於應用程序根目錄的路徑,而ResolveClientUrl方法返回相對於當前文件夾的路徑。 –

0

我使用一個變量來保存web根路徑。對於生產,它只是「/」。對於我的開發機器來說,它是「/ testapp /」(或其他)。我從web.config文件中的「appsettings」部分的條目中讀取了此內容。我使用變量構建路徑頁面等,像這樣:

string docPath = WebRootPath + "documents/test.doc" 
0

另一個答案是使用,而不是個人Web服務器(PWS-即,內置VS.NET內置的Web服務器)IIS。使用IIS進行測試和調試要快得多,一旦你習慣了它,它確實不需要太多的工作。它也解決了由於PWS下不同的路徑方案而產生的很多這些問題。

下載IIS管理工具,允許您使用IIS 5.1(XP)創建多個網站。

0

標記:

<a runat="server" href='<%# CustomResolveURL(Eval("url")) %>'><%#Eval("title") %></a> 

代碼隱藏:

protected string CustomResolveURL(object obj) 
{ 
    string result = string.empty; 
    string url = (string)obj; 
    if(!string.IsNullOrEmpty(url)) 
    { 
     result = ResolveUrl("~/" + url); 
    } 
    return result; 
} 
相關問題