Причина, по которой это происходит, в том, что 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;