У меня есть приложение ASP.NET, где в моей папке APP_Code у меня есть класс. В том, что у меня есть следующий код для чтения содержимого файла XML, который находится в моей корневой папке
XmlDocument xmlSiteConfig = new XmlDocument();
xmlSiteConfig.Load(System.Web.HttpContext.Current.Server.MapPath("../myConfig.xml"));
В папке My Root есть несколько папок с вложенными внутренними папками для некоторых. С первого уровня папок, когда я вызываю кусок кода в классе Appcode, я могу правильно загрузить XML файл, так как путь правильный. Теперь, если я назову ту же часть кода из папки innner, я получаю сообщение об ошибке. Если я изменю код ниже, он будет работать нормально
xmlSiteConfig.Load(System.Web.HttpContext.Current.Server.MapPath("../../myConfig.xml"));
Как я могу решить эту проблему. Я не хочу изменять путь к файлу для различных вызовов этого кода. С помощью какой части кода я могу решить проблему, чтобы программа загружала файл XML независимо от вызывающей позиции. Любые советы?
Заранее спасибо
Если это в корневой папке, используйте это:
Server.MapPath("~/myConfig.xml")
Это будет работать из любого каталога.
метод System.Web.HttpContext.Current.Server.MapPath("") должен получить корневой путь веб-приложения. поэтому System.Web.HttpContext.Current.Server.MapPath( "../myConfig.xml" ) - это путь от отца к веб-приложению это неправильно, если ваш файл здесь отсутствует. вы можете использовать System.Web.HttpContext.Current.Server.MapPath( "/path" ) вместо этого.
в другой руке, вы можете использовать "~" для обозначения корневого пути в каком-то элементе управления asp.net.
Префикс строки пути с тильдой (~) - это корень веб-сайта:
xmlSiteConfig.Load(System.Web.HttpContext.Current.Server.MapPath("~/myConfig.xml"));
Server.MapPath("~/MYXML.xml")
В этом "~" означает корневой каталог. Если вы хотите найти в любом подкаталоге, вы должны указать путь, например,
Server.MapPath("~/App_Data/MyXml.xml")
Работает ли Server.MapPath( "~/xmlFile.xml" )? ~/Сообщает .NET-приложению всегда начинать с корня приложения. Если ваш XML файл находится в подпапке (не там, где вы вызываете функцию, но фактический физический файл), тогда вы будете использовать server.mappath( "~/myfolder/xmlFile.xml" ).