Подтвердить что ты не робот

Как использовать относительный путь в XDocument.Load?

У меня есть XML файл с именем PageData.xml в папке App_Data. Я хочу заполнить XDocument этим файлом, используя XDocument.Load.

Если я поставлю полный физический путь, он будет работать, то есть:

XDocument vXDoc = XDocument.Load("/Work/Project/Web/100413 Dev/App_Data/PageData.xml");

... где "Работа" - это папка на моем диске C:.

Если я попробую относительный путь, как этот, я получаю DirectoryNotFoundException:

XDocument vXDoc = XDocument.Load("AppData/PageData.xml");

"Не удалось найти часть пути 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\AppData\PageData.xml'."

Это, очевидно, неправильно, но должен быть простой способ установить правильный относительный путь? Что я не замечаю? Ваша помощь приветствуется.

4b9b3361

Ответ 1

Есть несколько способов сделать это. Вы можете использовать Server.MapPath(), чтобы превратить виртуальный каталог в путь физического каталога:

XDocument xdoc = XDocument.Load(Server.MapPath("/App_Data/PageData.xml"));

Или вы можете использовать Request.PhysicalApplicationPath, например:

var path = Path.Combine(Request.PhysicalApplicationPath, "App_Data\\PageData.xml");
XDocument xdoc = XDocument.Load(path);

В любом случае проблема заключается в том, что текущий рабочий каталог рабочего процесса обычно не устанавливается в каталог приложения (это связано с тем, что рабочий каталог является общесистемным свойством, а один процесс может содержать несколько веб-сайтов), Дополнительная информация здесь.