我希望通过测试代码
来获取解决方案启动项目的父目录路径string parent = System.IO.Directory.GetParent(Server.MapPath("~/"));
我得到了我的解决方案的启动项目当前所在的目录。为什么?
答案 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;