应无所住,而生其心
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

net core获取绝对路径,获取项目根目录。wwwroot所在的根目录

9814人阅读 2019/3/29 21:26 总访问:4699807 评论:1 收藏:0 手机
分类: .NET Core


在net framework中获取绝对路径可以使用

Server.MapPath("~")


but.....在net core中并没有那个Server对象了



在net core中怎么获取呢?

其实也很简单,注入一个IHostingEnvironment对象就可以了。对,net core就是那个喜欢依赖注入


使用的时候:

  //获取项目的根目录
  string rootpath = _hostingEnvironment.ContentRootPath;
  //获取存储静态资源的wwwroot所在的根目录
  string webRootPath = _hostingEnvironment.WebRootPath;



2020-3-16更新

IHostingEnvironment在net core3.0中过期了应该使用IWebHostEnvironment

private readonly IWebHostEnvironment _webHostEnvironment;
public ResourceManagerController(IWebHostEnvironment webHostEnvironment)
{
  _webHostEnvironment = webHostEnvironment;
}


这样可以也可以  2022年更新

Directory.GetCurrentDirectory()

合并路径可以这样使用

string baseDir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads/files");



就是这样用了,知道怎么用了

尝试来分析一波,这样使用依赖注入与前面的Server.MapPath("~")有什么好处


虽然使用没有以前的方便,以前要使用随时都可以使用。

但是现在你可以控制用不用哇,不需要用的时候系统不会加载IHostingEnvironment对象,也就

不会消耗相关的资源,从而节约了效率,需要用的时候在使用注入就可以了!。


总:

1:以前的Server.MapPath使用方便,但是不管什么时候不管用不用他都会消费效率,都以为创建server对象

2:现在的虽然使用麻烦一点,但是可以控制要不要使用它,可控性更强,可扩展性更好,这就是所谓的以时间换效率吧,

     

     没有绝对的完美,随着时代的发展项目要求的提高,我们现在更需要的是可控性,可扩展性,可维护性。当然从而也会付出一些

     其他东西,需要维护和注意的东西更多一点。

     





欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价