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


一、需求

asp.net core 3.0的web項目中,在controller中,想要獲取wwwroot下的imgs/banners文件夾下的全部文件;
在傳統的asp.net web應用中,是用Server.MapPath()便可獲取到web的根目錄;
但在asp.net core 3.0的web項目中,已不能這樣用了;
在這裏插入圖片描述api

二、解決方案

1)、說明

ASP.NET Core爲文件提供了兩個不一樣的位置:asp.net

  • 內容根 - 這是應用程序二進制文件和其餘私有文件的保存位置。
  • Web根目錄 - 這是公共文件的保存位置(Web項目中的wwwroot文件夾)。

默認狀況下,Web根位於內容根目錄下。可是也存在Web根位於其餘位置的部署。.net

2)、具體解決方法

經過在controller中註冊IWebHostEnvironment 便可:code

[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根目錄;orm

相關文章
相關標籤/搜索