asp.net core 3.0獲取web應用的根目錄



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 即可:

    [Route("api")]
    [ApiController]
    public class resourceController : ControllerBase
    {
        private readonly IWebHostEnvironment _webHostEnvironment;
        public resourceController(IWebHostEnvironment webHostEnvironment)
        {
            _webHostEnvironment = webHostEnvironment;
        }
        [HttpGet("banners")]
        public ActionResult GetBanners()
        {
            string content_path = _webHostEnvironment.ContentRootPath;//D:\work\_BASE\pspb\pspb\src\pspb\
            string web_path = _webHostEnvironment.WebRootPath;//D:\work\_BASE\pspb\pspb\src\pspb\wwwroot
            DirectoryInfo di = new DirectoryInfo(web_path + "/imgs/banners");
            FileInfo[] fis = di.GetFiles();
            var temp = fis.Select(p => string.Format("imgs/banners/{0}", p.Name));
            return Ok(new { ok = true, data = temp });
        }
    }

_webHostEnvironment對象的ContentRootPath屬性就是內容根目錄;
_webHostEnvironment對象的WebRootPath屬性就是web根目錄;



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM