以下是我进行操作的步骤:
HttpContext.Current.Server.MapPath(@"~\~\~\Content\")
您好,我知道'.'代表项目的根目录,但如何返回几个文件夹上一级呢?
如果您确实需要祖先路径,可以使用Path.GetDirectoryName()
从根路径获取它:
string root = Server.MapPath("~");
string parent = Path.GetDirectoryName(root);
string grandParent = Path.GetDirectoryName(parent);
但是你的Web应用程序很可能没有权限读写那里 - 我不确定你打算对此做什么。
~
并指定完整路径:~/Archive/Content
。IIS故意禁止直接提供站点路径之外的内容。但是,您可以在IIS中创建虚拟目录,并让ISAPI Rewrite指向该目录。例如,创建一个���为/staticfiles的虚拟目录,其指向c:\test\data\static-files。就IIS而言,那就是站点根目录下的一个名为/staticfiles的文件夹。
string grandParent = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/")).Parent.Parent.FullName;
由于使用了MapPath方法,因此你得到的是从虚拟路径(/)返回的物理路径(\)。
创建DirectoryInfo对象或使用从子应用程序根目录开始的Path实用程序方法,除非您的虚拟父级和虚拟祖先与物理目录结构相同,否则不一定会得到您想要的结果。
我的应用程序的物理层次结构并不嵌套以匹配Url深度。如果涉及虚拟目录,情况也可能是如此。
假设祖父应用程序是两个虚拟文件夹,那么这将为您获取物理路径...
string physicalGrandparentPath = HttpContext.Current.Server.MapPath("~/../../");
最简单的方法,你仍然可以使用以下内容:
string MyFolderName = Server.MapPath("~/AliasName/");
添加一个虚拟目录到你的应用程序。以下是方法:
就这样,现在你可以访问了!
@"..\..\..\Content\"
。 - ediblecode