2012-11-08 46 views
6

我有一個.NET應用程序,我試圖調試,部分應用程序從我的項目中加載了一個文件。該文件位於在使用IIS Express進行調試時獲取文件的完整路徑

C:\Users\USER_FOLDER\Documents\Visual Studio 2012\Projects\MY_PROJECT\_templates\myFile.html 

在我的代碼,我指定一個相對路徑的文件,並使用DirectoryInfo類要到我的文件的完整目錄路徑:

string myFile = (new DirectoryInfo("_templates/myFile.html")).FullName; 

然而,這種回報以下路徑(額外的\'S作爲轉義字符):

"C:\\Program Files\\IIS Express\\_templates\\myFile.html" 

我期待在IIS Express進行調試將匹配我列出的第一個路徑,而不是第三個時返回的路徑。爲什麼是這樣?在我的項目中是否需要設置其他內容才能使其適當地導出路徑?我假設如果我將我的代碼部署到IIS7網站,這不會發生,但我還沒有達到測試級別。

+0

如果它返回'Program Files文件\\ IIS快遞\\'就意味着你從該目錄路徑啓動它,所以要更具體的瞭解目錄路徑。考慮'_templates/myFile.html「將是父目錄中的一個本地目錄,它不是很具體。 –

+0

在這一點上,調用Server.MapPath返回正確的路徑,而不必更具描述性。進入這一點,我不認爲我必須更具描述性,因爲在其他語言中,我正在處理該路徑,因爲它與引用該文件的腳本的位置有關,但爲了讀取它的內容, NET服務器需要一個完全合格的URI到路徑,我只是使用錯誤的對象來派生它。爲什麼我的_valid_問題被拒絕是令人困惑的。 –

回答

5

使用Server.MapPath

Server.MapPath("~/_templates/myFile.html") 

HttpServerUtility.MapPath

HttpServerUtility.MapPath("~/_templates/myFile.html") 
+0

謝謝! Server.MapPath爲我工作,但我無法讓HttpServerUtility.MapPath工作。對於HttpServerUtility,它一直抱怨說:'非靜態字段,方法或屬性'System.Web.HttpServerUtility.MapPath(字符串)'需要對象引用''我嘗試了各種寫入方式並且沒有任何工作,所以我'我只會使用Server.MapPath。再次感謝。 –

+0

不知道這是否是完全相同的情況,但我有相同的對象引用問題。我使用HttpContext解決了它。如 - HttpContext.Current.Server.MapPath(); –

相關問題