2011-06-10 60 views
0

Windows應用程序中用於Web應用程序的「HttpContext.Current.Server.MapPath」的替代選項。我應該在Windows應用程序中使用什麼來訪問文件。Windows應用程序中的HttpContext.Current.Server.MapPath替代

[編輯] 這是在窗口應用程序中的替代?

reader = XmlReader.Create(
      @"D:\EnviroTrack\EnviroTracker.Web\TestDevice\Data.xml", settings); 

請建議

+0

[HttpContext.Current.Server null]的可能重複(http://stackoverflow.com/questions/6304532/httpcontext-current-server-null) – 2011-06-11 01:17:23

回答

3

您可以使用正常的Path方法。 MapPath可幫助將虛擬路徑轉換爲Web服務器上的物理路徑。在winforms中不需要這種轉換。您可能正在尋找Assembly.GetExecutingAssembly().Location,它返回正在執行的程序集的位置。

編輯 - 您的更新問題應該在Winform中工作。 XmlReader.Create有相當多的重載,其中之一是(string, XmlReaderSettings)。這是你在問題中使用的重載。你可以使用相同的方法,但如果你喜歡,可以使用不同的目錄。

reader = XmlReader.Create(@"C:\Data.xml", settings); 

要獲得執行程序集的目錄,可以使用AppDomain.CurrentDomain.BaseDirectory。因此,它可能是這樣的:

reader = XmlReader.Create(AppDomain.CurrentDomain.BaseDirectory + "Data.xml", settings); 
+0

請參閱更新後的問題。 – DotnetSparrow 2011-06-10 18:11:27

+0

@DotnetSparrow:已更新的答案。 – keyboardP 2011-06-10 18:14:42

+0

我不想硬編碼路徑。 – DotnetSparrow 2011-06-10 18:18:24

0

我覺得Assembly.GetExecutingAssembly.Location返回exedll名稱,沒有嘗試過在一段時間這個功能,所以不能肯定它。

Application.StarupPath可能會完成這項工作。

+0

我已更新問題,請立即查看。 – DotnetSparrow 2011-06-10 18:11:02

相關問題