首页 / 问答 / [.NET/.NET Core]ASP.NET Core应用程序中如何当前应用程序项目的根目录路径呢?

[.NET/.NET Core]ASP.NET Core应用程序中如何当前应用程序项目的根目录路径呢?

.NET C# .NET Core ASP.NET Core .NET 5 1.74K 次浏览
0

在ASP.NET Core的应用程序开发中,有类似如下的项目目录结构:

  • Project,
  • Project/data
  • Project/Engine
  • Project/Server
  • project/front-end

现需要在Project/Server目录获取当前项目的根目录:

var rootFolder = Directory.GetCurrentDirectory();
rootFolder = rootFolder.Substring(0,
            rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
PathToData = Path.GetFullPath(Path.Combine(rootFolder, "Data"));

var Parser = Parser();
var d = new FileStream(Path.Combine(PathToData, $"{dataFileName}.txt"), FileMode.Open);
var fs = new StreamReader(d, Encoding.UTF8);

上面的方法在Windows操作系统中可以正确获取到当前项目的根目录,但在Linux操作系统,获取到的目录路径并非项目运行的根目录。

那么,在ASP.NET Core应用程序中,应该如何获取当前项目运行的根目录路径呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    如果在控制器中需要获取当前ASP.NET Core项目的根目录,则在控制器的构造函数中注入相应的接口服务,比如你想通过IConfiguration来访问当前ASP.NET Core项目的根目录,则在控制器中添加一个私有变量:

    然后通过控制器构造函数注入``,如下:

    现在,可以通过如下方式获取到当前ASP.NET Core项目运行的根目录路径了:

    完整示例代码如下:

    类似地,如果想要通过IWebHostEnvironment来获取当前项目运行的根目录,则需要先定义一个IWebHostEnvironment的私有变量,如下:

    然后通过控制器构造函数注入``,如下:

    现在,可以通过如下方式获取到当前ASP.NET Core项目运行的根目录路径了:

    完整示例代码如下:

    Rector的个人主页

    Rector

    2021-04-21 回答

    • 0

      在ASP.NET Core/.NET Core的应用程序中,你可以通过IConfiguration或者IHostingEnvironment(.NET Core 3.0中是IWebHostEnvironment)接口来访问当前项目运行的根目录路径,如下:

      或者,在Startup.cs的构造函数中添加IWebHostEnvironment参数,如下:

      Rector的个人主页

      Rector

      2021-04-21 回答

      • 0

        在ASP.NET Core Razor Pages的页面中,同样可以通过构造函数注入的方式来获取当前项目运行的根目录路径,如:

        Rector的个人主页

        Rector

        2021-04-21 回答

        我来回答