本文主要介绍 ASP.NET Core网站中,通过网站相对路径获取实现物理路径方法代码,相当之前的ASP.NET中Server.MapPath()方法。

在Asp.NET Core中,使用IHostingEnvironment接口抽象了托管环境。
ContentRootPath属性将让您使用的应用程序内容文件的绝对路径。
如果您想访问可在Web上使用的根路径(默认为www文件夹),则也可以使用WebRootPath属性。
可以将此依赖项注入到控制器中,并按以下方式访问它:

1、.NET Core 3.0之前版本

public class HomeController : Controller
{
private readonly IHostingEnvironment _hostingEnvironment;
public HomeController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
public ActionResult Index()
{
string webRootPath = _hostingEnvironment.WebRootPath;
string contentRootPath = _hostingEnvironment.ContentRootPath;
return Content(webRootPath + "\n" + contentRootPath);
}
}

2、.NET Core 3.0版本

//IHostingEnvironment已被.NET Core 3.0标记为过时。如果目标框架是.NET Core 3.0,使用如下所示的IWebHostEnvironment
public class HomeController : Controller
{
    private readonly IWebHostEnvironment _webHostEnvironment;
    public HomeController(IWebHostEnvironment webHostEnvironment)
    {
        _webHostEnvironment= webHostEnvironment;
    }
    public IActionResult Index()
    {
        string webRootPath = _webHostEnvironment.WebRootPath;
        string contentRootPath = _webHostEnvironment.ContentRootPath;
        return Content(webRootPath + "\n" + contentRootPath);
    }
}