2016-06-28 77 views
1

我知道,當您使用ASP.NET時,可以使用runat =「server」來使相對路徑工作。有沒有一種方法可以用普通的字符串路徑來完成這一點?我的電話是這樣的在.NET服務器上加載文件

userConfig.Load("~\\App_Data\\userConfigDefault.xml"); 

我得到的

Could not find a part of the path 'C:\Program Files (x86)\IIS Express\~\App_Data\userConfigDefault.xml'. 

我最好的XML文件是在我的解決方案錯誤代碼,但我也不能因爲這個應用程序沒有硬編碼它的位置將變得便攜。我需要弄清楚如何在我的C#代碼中使用相對路徑。

任何幫助將是偉大的。謝謝。

編輯: 我試圖讀取的XML文件的文件路徑實際上是項目解決方案中的App_Data文件夾。 Rion的第一個解決方案將我指向我的用戶\ AppData \ Roaming。我不是一個挑剔的人。指向我的Visual Studio解決方案中的任何文件夾將解決我的問題。

+0

您是否在尋找'userConfig.Load(Server.MapPath(「〜\\ App_Data \\ userConfigDefault.xml」))'? –

+0

我無法使服務器工作,但我找到了解決辦法。謝謝! 'var path = System.Web.Hosting.HostingEnvironment.MapPath(「〜\\ App_Data \\ userConfigDefault.xml」);' –

回答

2

一般來說,如果你打算從你的App_Data目錄訪問一個文件,你應該考慮使用Environment.SpecialFolder.ApplicationData屬性,如下圖所示:

// This will resolve the appropriate path for your App_Data directory 
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),"userConfigDefault.xml"); 

另外,Server.MapPath()還將努力並應該接受一個相對路徑點到相應的目錄:

var path = Server.MapPath("~/App_Data/"userConfigDefault.xml"); 
+0

我認爲OP正試圖使用​​網站的App_Data文件夾,而不是機。 –

+1

如果是這樣的話,那麼'Server.MapPath()'方法可能是處理這個問題的最合適的方法,我也已經包含了這個方法。感謝您指出了這一點。 –

相關問題