如何检查文件是否存在于wwwroot?

Iva*_*ono 2 c# asp.net-core

如何检查文件是否存在于wwwroot. System.IO.File需要一个绝对路径。

是不是需要先把相对路径转换成绝对路径,还是有更简单的方法?

Joh*_*n H 5

对于 ASP.NET Core 3,您可以注入一个实例,IWebHostEnvironment该实例具有WebRootPath指向您的wwwroot文件夹的属性。举个例子:

public class HomeController : Controller
{
    private readonly IWebHostEnvironment _environment;

    public HomeController(IWebHostEnvironment environment)
    {
        _environment = environment;
    }

    public IActionResult Index()
    {
        var wwwroot = _environment.WebRootPath;
        var favicon = Path.Combine(wwwroot, "favicon.ico");
        var favicon2 = Path.Combine(wwwroot, "favicon2.ico");
        
        // true
        var exists = System.IO.File.Exists(favicon);
        // false
        var exists2 = System.IO.File.Exists(favicon2);
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,该属性有一个 setter,因此请确保不要覆盖它。