asp.net core 3.0获取web应用的根目录

淡淡的烟草味﹌ 2023-06-15 09:57 48阅读 0赞

文章目录

      • 1、需求
      • 2、解决方案
        • 1)、说明
        • 2)、具体解决方法

1、需求

asp.net core 3.0的web项目中,在controller中,想要获取wwwroot下的imgs/banners文件夹下的所有文件;
在传统的asp.net web应用中,是用Server.MapPath()即可获取到web的根目录;
但在asp.net core 3.0的web项目中,已不能这样用了;
在这里插入图片描述

2、解决方案

1)、说明

ASP.NET Core为文件提供了两个不同的位置:

  • 内容根 - 这是应用程序二进制文件和其他私有文件的保存位置。
  • Web根目录 - 这是公共文件的保存位置(Web项目中的wwwroot文件夹)。

默认情况下,Web根位于内容根目录下。但是也存在Web根位于其他位置的部署。

2)、具体解决方法

通过在controller中注册IWebHostEnvironment 即可:

  1. [Route("api")]
  2. [ApiController]
  3. public class resourceController : ControllerBase
  4. {
  5. private readonly IWebHostEnvironment _webHostEnvironment;
  6. public resourceController(IWebHostEnvironment webHostEnvironment)
  7. {
  8. _webHostEnvironment = webHostEnvironment;
  9. }
  10. [HttpGet("banners")]
  11. public ActionResult GetBanners()
  12. {
  13. string content_path = _webHostEnvironment.ContentRootPath;//D:\work\_BASE\pspb\pspb\src\pspb\
  14. string web_path = _webHostEnvironment.WebRootPath;//D:\work\_BASE\pspb\pspb\src\pspb\wwwroot
  15. DirectoryInfo di = new DirectoryInfo(web_path + "/imgs/banners");
  16. FileInfo[] fis = di.GetFiles();
  17. var temp = fis.Select(p => string.Format("imgs/banners/{0}", p.Name));
  18. return Ok(new { ok = true, data = temp });
  19. }
  20. }

_webHostEnvironment对象的ContentRootPath属性就是内容根目录;
_webHostEnvironment对象的WebRootPath属性就是web根目录;


▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
博客园同步更新地址:https://www.cnblogs.com/willingtolove/p/11908506.html
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲


发表评论

表情:
评论列表 (有 0 条评论,48人围观)

还没有评论,来说两句吧...

相关阅读