繁体   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