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

Int*_*ist 5 c# asp.net-core

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

我想使用以下内容,其中env是一个实例IWebHostEnvironment

var provider = env.WebRootFileProvider;
var path = env.WebRootPath;
Run Code Online (Sandbox Code Playgroud)

我不确定如何IWebHostEnvironment从控制器中获取 的实例。如何才能做到这一点?

Mét*_*ule 9

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

public class MyController : Controller
{
    private readonly IWebHostEnvironment _env;
    public MyController(IWebHostEnvironment env)
    {
        _env = env;
    }
}
Run Code Online (Sandbox Code Playgroud)

或在任何或控制器的方法中:

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

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