.Net Core取得HostingEnvironment路徑

在針對專案內部檔案做一些讀取操作的時候

難免都會需要參照到實體的伺服器路徑

假設今天要在Controller讀取一個內部的檔案

在MVC5的世界是這樣寫的

public ActionResult ReadInternalFile()
{
     var filePath = HostingEnvironment.MapPath("~/File/players.json");

     return View();
}

 

然後我就依樣畫了葫蘆

恩...結果當然什麼都沒有

不然我就不用紀錄了

 

 

查了一下.Net Core的使用方法

要取得這個物件還需要透過DI才拿的到

看來微軟也開始玩朕不給的你不能要這套了

既然是DI

不免俗的一定是抽成介面了 - IHostingEnvironment

必須在Controller建構式中宣告才拿的到

public class PlayerController : Controller
{
    private readonly IHostingEnvironment hostingEnvironment;

    public PlayerController(IHostingEnvironment _hostingEnvironment)
    {
        hostingEnvironment = _hostingEnvironment;
    }

}

 

 

接著我們看看裡面的東西

不過由於新的專案架構有改變

針對Path的部分有兩個很像的東西

- WebRootPath:顧名思義就是直接回給你wwwroot的實體路徑啦

- ContentRootPath :回傳專案外層的實體路徑

 

好的,這篇就介紹到這邊囉!

 

參考資料:

Getting the Web Root Path and the Content Root Path in ASP.NET Core