2013-05-27 31 views
1

在多人和幾個組件(Web應用程序,服務應用程序和其他組件)之間執行項目。我們將在Web應用程序的Content文件夾中存儲一些信息,以便它可以通過href直接從Web服務器訪問,但是Web應用程序之外的其他組件也需要訪問此文件夾,並且由於我們共享多人之間使用絕對路徑的項目不是一種選擇。我們有什麼選擇?如何獲取ASP.NET內容相對路徑

編輯:試圖解釋它好一點。

我確切的是,一個Web項目,一個「數據項目」,這只是一個DLL,一個「邏輯」項目,這是另一個DLL和服務項目,這是一個EXE /服務。 Web項目和服務項目都使用邏輯中的方法以及數據項目中的邏輯。作爲最後一個負責存儲數據的數據庫和文件系統。 這個「文件系統」路徑應該是可配置的,我們打算把它放到web項目的內容文件夾中,這樣多媒體文件可以直接訪問,而不是做一個字節流。

現在在web.config(web應用程序的配置文件)和app.config(服務應用程序的配置文件)中,我可以設置網頁/內容的絕對路徑(兩個配置文件都是相同的)和數據DLL會使用它沒有問題。現在主要的問題是我們不能在配置文件中放置絕對路徑,因爲每個人都在具有明顯不同文件路徑的不同計算機上工作。所以,如果我可以在配置文件中寫下類似於〜/ project/Web/Content而不是C:/ myfolder/stuff/blabla/project/web/content的內容,〜解析項目的路徑,這就是我想!或者,也許更好的想法是如何與這些應用程序共享文件夾,而無需在某處添加硬編碼的絕對路徑。

+0

我們需要訪問裏面的代碼文件/目錄,這是web項目中的特定文件夾內。而使用絕對路徑是行不通的。 – user1777914

+0

你可以添加一些關於你真正想要在你的項目中做什麼的示例代碼嗎? –

+0

顯示代碼有點難,但基本上,我有一個web項目和一個dll項目,負責處理數據。這個DLL需要找到/存儲數據的路徑,而這個DLL將從Web應用程序以及其他服務應用程序調用,因此它需要成爲絕對路徑。然而,由於我們是從事該項目的少數人,我們無法真正爲每個人使用絕對路徑。 – user1777914

回答

2

要使用什麼是:

Server.MapPath("/Content/filepath.ext"); 

這會給你此基礎上的文件的絕對路徑的位置在網站內,在這種情況下,從/ Content目錄。


對於網站外部的程序,您有幾個選項;

最容易實現的可能是外部程序中指向目錄的簡單配置值。我的猜測是你已經認定這並不理想,但它可能是最快的方法。

另外,還有一個Microsoft .NET程序集,它可以讓您輕鬆訪問IIS信息(我無法從頭頂回憶它的名字!)。您可以使用此程序集查找相應的網站,並檢索其根目錄。我會看看我是否可以找到它並獲得一個例子,或者別人會看到這個信息併發佈一個答案。

+0

這可以在Web服務器內部工作,但外部項目(即服務項目)也需要這個路徑嗎?查詢Web服務器的路徑並不是真正的選擇。 – user1777914

+0

@ user1777914我發佈了對ya的更新。 –

+0

理想情況下,它將是一個指向絕對路徑的配置文件中的值,但是當開發我們每個人時應該改變該值並且永遠不提交它。不確定svn是否支持「不提交行」 – user1777914