如何从ASP.NET Core 3控制器中访问IWebHostEnvironment?

时间:2019-12-12 12:47:36

标签: c# asp.net-core

我希望能够从控制器中的代码浏览Web根目录中的目录(例如,我的\ img目录或\ pdf目录)。

我想使用类似以下的内容,其中envIWebHostEnvironment的实例:

var provider = env.WebRootFileProvider;
var path = env.WebRootPath;

我不确定如何从控制器中获取IWebHostEnvironment的实例。该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用依赖项注入将IWebHostEnvironment实例注入您的控制器。要么在构造函数中:

public class MyController : Controller
{
    private readonly IWebHostEnvironment _env;
    public MyController(IWebHostEnvironment env)
    {
        _env = env;
    }
}

或采用任何一种或控制器的方法:

public class MyController : Controller
{
    [HttpGet]
    public IActionResult Me([FromServices] IWebHostEnvironment env)
    {
        return View();
    }
}

请注意,默认WebRootFileProvider指向wwwroot文件夹,因此您需要确保它存在,否则您将得到一个NullFileProvider