Server.MapPath() не получает необходимый путь
У меня есть сайт asp.net, на котором есть следующий каталог:
C: \ Users \ Desktop \ Testing \ SRC \ сайт
У меня есть еще одна папка под названием "файлы", которая находится здесь:
C:\Users\Desktop\Testing\src\files
из моего проекта я пытаюсь прочитать файлы из папки "файлы", я делаю это так:
var path = HttpContext.Current.Server.MapPath("/files");
Я также попробовал:
var path = HttpContext.Current.Server.MapPath("..");
Но это говорит Failed to map the path '/files'.
Что может быть причиной этого? это могло сделать что-то с моим IIS? Как я могу заставить это работать??
Спасибо!
2 ответа
Вы не можете сделать это. Server.MapPath
Метод работает только с папками относительно корня веб-приложения, которое в вашем случае C:\Users\Desktop\Testing\src\website
, Вы не можете подняться на один уровень выше в иерархии, используя этот метод, поскольку вы покидаете домен управления этим приложением ASP.NET. Для достижения этого вам придется использовать абсолютный путь. Например, если вы хотите прочитать какой-то файл, который находится за пределами вашего приложения:
var data = File.ReadAllText(@"C:\Users\Desktop\Testing\src\files\somefile.txt");
При условии, что виртуальный каталог веб-сайтов сопоставлен с.../src/website, вам нужно получить папку "files", например:
var filesDir = Path.Combine(HttpContext.Current.Server.MapPath("~"), "../files/");