Поскольку вы используете MapPath, вам возвращается физический путь (\) из виртуального пути (/).
Создание объекта DirectoryInfo или использование служебного метода Path, начиная с корня дочернего приложения, не обязательно даст вам то, что вы ожидаете, если ваш виртуальный родитель и виртуальный дедушка не имеют ту же иерархию, что и ваша структура физического каталога.
Мои приложения физически не вложены в соответствии с глубиной URL. Это также может иметь место, если задействован виртуальный каталог.
Если предположить, что приложение для прародителя состоит из двух виртуальных папок, это даст вам физический путь
string physicalGrandparentPath = HttpContext.Current.Server.MapPath("~/../../");
Использование этой функции защитит вас от любых игр в случайном порядке с виртуальными каталогами, происходящих в настройках IIS.
Я использовал это, чтобы увидеть, как далеко я смогу подняться. Я не получил HttpException, пока не попытался перейти выше wwwroot.