Server.MapPath () не получает необходимый путь - PullRequest
1 голос
/ 18 сентября 2011

У меня есть веб-сайт asp.net со следующим каталогом:

C: \ Users \ Desktop \ Testing \ src \ website

У меня есть еще одна папка с именем "files", котораяздесь:

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 ]

5 голосов
/ 18 сентября 2011

Вы не можете сделать это.Метод Server.MapPath работает только с папками, относящимися к корню веб-приложения, который в вашем случае равен C:\Users\Desktop\Testing\src\website.Вы не можете подняться на один уровень выше в иерархии, используя этот метод, поскольку вы покидаете домен управления этим приложением ASP.NET.Для достижения этого вам придется использовать абсолютный путь.Например, если вы хотите прочитать какой-то файл, который находится за пределами вашего приложения:

var data = File.ReadAllText(@"C:\Users\Desktop\Testing\src\files\somefile.txt");
0 голосов
/ 18 сентября 2011

при условии, что виртуальный каталог веб-сайтов сопоставлен с ... / src / website, вам нужно получить папку "files", например:

var filesDir = Path.Combine(HttpContext.Current.Server.MapPath("~"), "../files/");
...