[.NET/.NET Core]ASP.NET Core应用程序中如何当前应用程序项目的根目录路径呢?
2.23K 次浏览
在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 个回答
-
如果在控制器中需要获取当前ASP.NET Core项目的根目录,则在控制器的构造函数中注入相应的接口服务,比如你想通过
IConfiguration
来访问当前ASP.NET Core项目的根目录,则在控制器中添加一个私有变量:然后通过控制器构造函数注入``,如下:
现在,可以通过如下方式获取到当前ASP.NET Core项目运行的根目录路径了:
完整示例代码如下:
类似地,如果想要通过
IWebHostEnvironment
来获取当前项目运行的根目录,则需要先定义一个IWebHostEnvironment
的私有变量,如下:然后通过控制器构造函数注入``,如下:
现在,可以通过如下方式获取到当前ASP.NET Core项目运行的根目录路径了:
完整示例代码如下: