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

时间:2012-01-20 19:56:21

标签: asp.net directory-structure

我希望通过测试代码

来获取解决方案启动项目的父目录路径
string parent = System.IO.Directory.GetParent(Server.MapPath("~/"));

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

2 个答案:

答案 0 :(得分:4)

我不确定为什么会这样,在momemt。但你可以做到

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

获取父目录路径。

我试着找到System.IO.Directory.GetParent(Server.MapPath("~/"))不起作用的答案,如果我发现了什么就更新了。

更新

我找到了另一个Stackoverflow question的可能答案 GSerg

  

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

答案 1 :(得分:1)

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