内部文件夹中的ASP.NET Server.Mappath问题

我有一个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(“〜/ xmlFile.xml”)适合您吗? 〜/告诉.NET应用程序始终从应用程序根目录开始。 如果您的XML文件位于子文件夹中(不是您调用该函数而是实际物理文件的位置),那么您将使用server.mappath(“〜/ myfolder / xmlFile.xml”)。

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

在这个“〜”表示根目录。 如果你想在任何子目录中找到,那么你应该给路径,例如,

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