2011-05-06 44 views
3

我正在尝试获取应用程序的根文件夹。我已经使用了下面的代码,但是这给出了bin文件夹,但我需要的是应用程序的根文件夹。是否有可能得到这个?如何获取ASP.NET应用程序的根文件夹

// This is the full directory and exe name 
String fullAppName = Assembly.GetExecutingAssembly().GetName().CodeBase; 

// This strips off the exe name 
String fullAppPath = Path.GetDirectoryName(fullAppName); 
+1

我假设你正在调试,所以'bin'文件夹是应用程序的运行目录。你想要解决方案文件的位置吗? – PostMan 2011-05-06 07:53:02

+0

你的意思是'bin \ Debug'或'bin \ Release'而不是'bin'? – 2011-05-06 07:54:32

+0

我想要解决方案文件的位置,因为我需要添加一个文件夹到这个位置来保存上传文件 – user517406 2011-05-06 08:11:21

回答

11

您exe文件的位置是应用程序的根。

您可以使用string appPath = Path.GetDirectoryName(Application.ExecutablePath);来获取应用程序路径。

如果你想找到解决方案所在的文件夹,我建议从exe文件位置开始,然后向上走到目录树,直到找到包含.sln文件的文件夹。不太确定为什么你想这样做。

编辑:只是想通了你正在创建一个asp.net网站。在这种情况下,你应该能够使用以下(发现here):

public static string MappedApplicationPath 
{ 
    get 
    { 
     string APP_PATH = System.Web.HttpContext.Current.Request.ApplicationPath.ToLower(); 
     if(APP_PATH == "/")  //a site 
     APP_PATH = "/"; 
     else if(!APP_PATH.EndsWith(@"/")) //a virtual 
     APP_PATH += @"/"; 

     string it = System.Web.HttpContext.Current.Server.MapPath(APP_PATH); 
     if(!it.EndsWith(@"\")) 
     it += @"\"; 
     return it; 
    } 
} 
+0

我想要解决方案文件的位置,因为我需要添加一个文件夹到这个位置来保存上传的文件 – user517406 2011-05-06 08:11:37

+1

我想说在exe文件夹中有一个文件夹可能更有意义,而不是sln文件。但是,如果exe是从sln文件所在的子文件夹中运行的,那么我上面的建议应该可以工作。 – 2011-05-06 08:14:09

+0

Application.ExecutablePath是C#4中的新事物,因为它在VS2008中不被识别? – user517406 2011-05-06 08:23:56

0

什么是“根”文件夹,如果没有在exe文件从执行该文件夹?
它可能是任何东西!
您可能想使用Directory.Parent向上导航树,但必须编写该代码专门编写代码

1

你的程序有没有知识或链接到其开发环境,所以有它知道其他的解决方案目录比你告诉他,没有别的办法。

要么去给父母帕伦特目录,其他的建议,或把它作为在执行参数,或检查this SO post你如何获得解决方案目录在C#)有整洁的方式做这个。

相关问题