ASP.NET Server.Mappath проблема из внутренних папок

2

У меня есть приложение 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 независимо от вызывающей позиции. Любые советы?

Заранее спасибо

Теги:

5 ответов

17
Лучший ответ

Если это в корневой папке, используйте это:

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

Это будет работать из любого каталога.

  • 1
    слишком быстро для меня;)
  • 0
    Да, это сработало. Спасибо всем
1

метод System.Web.HttpContext.Current.Server.MapPath("") должен получить корневой путь веб-приложения. поэтому System.Web.HttpContext.Current.Server.MapPath( "../myConfig.xml" ) - это путь от отца к веб-приложению это неправильно, если ваш файл здесь отсутствует. вы можете использовать System.Web.HttpContext.Current.Server.MapPath( "/path" ) вместо этого.

в другой руке, вы можете использовать "~" для обозначения корневого пути в каком-то элементе управления asp.net.

1

Префикс строки пути с тильдой (~) - это корень веб-сайта:

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

В этом "~" означает корневой каталог. Если вы хотите найти в любом подкаталоге, вы должны указать путь, например,

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

Работает ли Server.MapPath( "~/xmlFile.xml" )? ~/Сообщает .NET-приложению всегда начинать с корня приложения. Если ваш XML файл находится в подпапке (не там, где вы вызываете функцию, но фактический физический файл), тогда вы будете использовать server.mappath( "~/myfolder/xmlFile.xml" ).

  • 1
    Дэвид М и я пишу быстрее, чем я :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню