ASP.NET Directory.GetParent似乎返回的是实际的文件夹路径,而不是父路径

ASP.NET Directory.GetParent似乎返回的是实际的文件夹路径,而不是父路径,asp.net,directory-structure,Asp.net,Directory Structure,我想通过测试该代码来获取解决方案启动项目的父目录路径 string parent = System.IO.Directory.GetParent(Server.MapPath("~/")); 我获取解决方案的启动项目当前所在的目录。为什么?目前我不知道为什么会发生这种情况。但你能做到 string parent = new DirectoryInfo(Server.MapPath("~/")).Parent.FullName; 获取父目录路径 我试图找到System.IO

我想通过测试该代码来获取解决方案启动项目的父目录路径

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

我获取解决方案的启动项目当前所在的目录。为什么?

目前我不知道为什么会发生这种情况。但你能做到

string parent = new DirectoryInfo(Server.MapPath("~/")).Parent.FullName;
获取父目录路径

我试图找到
System.IO.Directory.GetParent(Server.MapPath(“~/”)
不起作用的原因,并在发现问题时进行更新

更新 我在另一个说的人身上找到了一个可能的答案

我只能假设目录。GetParent(…)不能假设C:\parent\child是一个目录,而不是一个没有文件扩展名的文件。DirectoryInfo可以,因为您正在以这种方式构造对象


发生这种情况的原因是因为
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;