簡體   English   中英

內部文件夾中的ASP.NET Server.Mappath問題

[英]ASP.NET Server.Mappath problem from inner folders

我有一個ASP.NET應用程序,在我的APP_Code文件夾中我有一個類。我有以下代碼來讀取我的根文件夾中的XML文件的內容

XmlDocument xmlSiteConfig = new XmlDocument();
xmlSiteConfig.Load(System.Web.HttpContext.Current.Server.MapPath("../myConfig.xml"));

我的Root文件夾有幾個帶有嵌套內部文件夾的文件夾。當我調用Appcode類中的代碼時,從第一級文件夾開始,我能夠正確加載XML文件,因為路徑是正確的。如果我從一個固有的文件夾調用同一段代碼,我收到一個錯誤。如果我將代碼更改為以下它將工作正常

xmlSiteConfig.Load(System.Web.HttpContext.Current.Server.MapPath("../../myConfig.xml"));

我怎么能解決這個問題。我不想改變對這段代碼的各種調用的文件路徑。用什么代碼我可以解決問題,這樣程序就會加載XML文件而不管調用位置如何。 有什么建議?

提前致謝

如果它在根文件夾中,請使用:

Server.MapPath("~/myConfig.xml")

這將適用於任何目錄。

使用波形符(〜)前綴您的路徑字符串 - 這表示網站的根目錄:

xmlSiteConfig.Load(System.Web.HttpContext.Current.Server.MapPath("~/myConfig.xml"));

System.Web.HttpContext.Current.Server.MapPath(“”)方法是獲取Web應用程序的根路徑。 所以System.Web.HttpContext.Current.Server.MapPath(“../ myConfig.xml”)是獲取Web應用程序的父路徑,如果你的文件不在這里,那就錯了。 您可以使用System.Web.HttpContext.Current.Server.MapPath(“/ path”)代替。

另一方面,您可以使用“〜”表示某些asp.net控件中的根路徑。

Server.MapPath("~/MYXML.xml")

在這個“〜”表示根目錄。 如果你想在任何子目錄中找到,那么你應該給路徑,例如,

Server.MapPath("~/App_Data/MyXml.xml")

Server.MapPath(“〜/ xmlFile.xml”)適合您嗎? 〜/告訴.NET應用程序始終從應用程序根目錄開始。 如果您的XML文件位於子文件夾中(不是您調用函數而是實際物理文件的位置),那么您將使用server.mappath(“〜/ myfolder / xmlFile.xml”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM