【问题标题】:How to get root folder of ASP.NET application如何获取 ASP.NET 应用程序的根文件夹
【发布时间】:2016-12-28 09:50:32
【问题描述】:

我正在尝试获取应用程序的根文件夹。我使用了以下代码,但这给出了bin 文件夹,但我需要的是应用程序的根文件夹。这个有可能吗?

// 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);

【问题讨论】:

  • 我假设你正在调试,所以bin 文件夹是应用程序的运行目录。您想要解决方案文件的位置吗?
  • 您的意思是bin\Debug 还是bin\Release 而不是bin
  • 我想要解决方案文件的位置,因为我需要在这个位置添加一个文件夹来保存上传的文件

标签: c# asp.net


【解决方案1】:

您的 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;
   }
}

【讨论】:

  • 我想要解决方案文件的位置,因为我需要在这个位置添加一个文件夹来保存上传的文件
  • 我想说在exe所在的文件夹中拥有一个文件夹可能更有意义,而不是sln文件。但是,如果 exe 是从 sln 文件所在文件夹的子文件夹运行的,那么我上面的建议应该可以工作。
  • Application.ExecutablePath 是 C# 4 中的一个新事物,因为它在 VS2008 中没有被识别?
  • 好的,它是 Windows 窗体而不是 Web 窗体
  • 如果有人通过谷歌找到这个,在我看来,这段代码太激进了。 System.Web.HttpContext.Current.Server.MapPath(null); 应该可以。来自文档:“如果 path 为 null,则 MapPath 方法返回包含当前应用程序的目录的完整物理路径。”
【解决方案2】:

你的程序不知道它的开发环境或链接到它的开发环境,所以除了你告诉他之外,它没有其他方法知道解决方案目录。

按照其他人的建议,要么转到 parent-parente 目录,要么将其作为参数传递到可执行文件中,或者检查this SO post如何在 C# 中获取解决方案目录)有巧妙的方法来做到这一点。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      如果您尝试修改解决方案文件夹,创建构建脚本可能比创建运行时应用程序更有意义。通过这些脚本,您可以轻松访问解决方案结构。

      http://visualstudiohacks.com/general/customize-your-project-build-process/

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 2011-03-26
        • 1970-01-01
        • 2012-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-24
        • 2021-06-27
        相关资源
        最近更新 更多