ASP.Net搜索子目录

时间:2009-06-03 02:43:18

标签: c# asp.net

如何搜索ASP.Net网站中的子目录?

我知道如果这是一个常规的Winform项目,我可以通过以下方式轻松获得它:

Environment.CurrentDirectory

System.IO.Directory.GetCurrentDirectory()

然后

string[] directories = System.IO.Path.Combine(Environment.CurrentDirectory, "Portfolio")

如何在ASP.Net中构建名为Portfolio的子文件夹的路径?

我在构建http://??????????/Portfolio的所有内容时遇到了问题。怎么找到??????一部分?

我尝试了上面的代码,但得到了一个完全不同的目录...

我不想在最后一个子文件夹之前硬编码所有内容,因为它在另一台服务器上会有所不同。

3 个答案:

答案 0 :(得分:2)

从ASP.NET应用程序调用它时,调用Directory.GetCurrentDirectory()可能会产生误导。解决此问题的最佳方法是使用Server.MapPath()代替,这样您就可以将网络文件夹映射到磁盘上的位置。

例如,运行此代码:

string path = Server.MapPath("~/Portfolio");

将“path”设置为等于磁盘上该文件夹的位置。

如果您从Page或控件类的上下文之外运行此代码,则无法直接访问Server对象。在这种情况下,您的代码将如下所示:

string path = HttpContext.Current.Server.MapPath("~/Portfolio");

答案 1 :(得分:0)

如果我理解你,你可以通过以下方式访问它:

"/portfolio" 

系统会将“/ portfolio”连接到网址,例如,如果是“http://site.com”,您将获得“http://site.com/portfolio

如果您需要物理路径,可以使用

server.mappath("/portfolio") 

它将返回相关的物理目录(例如E:\ websites \ site \ portfolio“)

答案 2 :(得分:0)

以下一行将您带到'bin'目录

Assembly asm = Assembly.GetExecutingAssembly();
String strAppHome = Path.GetDirectoryName(asm.CodeBase).Replace("file:\\", "");