ASP.NET Directory.GetParent, кажется, возвращает фактический путь к папке, а не родительский путь - PullRequest
3 голосов
/ 20 января 2012

Я хочу получить путь к родительскому каталогу для проекта запуска моего решения, протестировав этот код

string parent = System.IO.Directory.GetParent(Server.MapPath("~/"));

Я получаю каталог, в котором сейчас находится проект запуска моего решения. Почему?

Ответы [ 2 ]

4 голосов
/ 21 января 2012

Я не уверен, почему это происходит, в данный момент. Но вы можете сделать

string parent = new DirectoryInfo(Server.MapPath("~/")).Parent.FullName;

чтобы получить путь к родительскому каталогу.

Я пытаюсь найти ответ, почему System.IO.Directory.GetParent(Server.MapPath("~/")) не работает, и обновляю его, если я что-то нашел.

Обновление

Я нашел возможный ответ на другой вопрос Stackoverflow кто GSerg скажет

Я могу только предположить, что Directory.GetParent (...) не может предположить, что C: \ parent \ child - это каталог, а не файл без расширения файла. DirectoryInfo может, потому что вы создаете объект таким образом.

1 голос
/ 21 января 2012

Причина, по которой это происходит, в том, что Server.MapPath добавляет \ в конце пути (даже если вы удалите его из MapPath), например:

C:\foo\bar\

Если вы попытаетесь получить родительский каталог, он выдаст C:\foo\bar без косой черты.

Так что это будет работать:

var path = System.IO.Directory.GetParent(Server.MapPath("~").TrimEnd('\\'));

Вот альтернатива:

var path = new System.IO.DirectoryInfo(Server.MapPath("~")).Parent.FullName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...