C# System.IO.FileNotFoundException 当文件确实存在时

C# System.IO.FileNotFoundException when file definitely exists

我正在尝试 return 来自 ASP.NET 核心中的操作的文件:

public IActionResult GetFile(string filePath) {
    return File("/home/me/file.png", "application/octet-stream");
}

然而,我得到一个

System.IO.FileNotFoundException

在我的浏览器中 window:

An unhandled exception occurred while processing the request. FileNotFoundException: Could not find file: /home/me/file.png

Microsoft.AspNetCore.Mvc.Infrastructure.VirtualFileResultExecutor.ExecuteAsync(ActionContext context, VirtualFileResult result)

我试过使用 System.IO.File.Exists 检查文件是否存在并在 Directory.GetFiles 中查找它,两者都说文件确实存在。我也试过将媒体类型更改为 image/png,但这没有任何帮助。

为什么会出现此错误,我该如何解决?

这是我在一个应用程序中使用的,它完美地工作:

   [HttpGet]
   [Route("download")]
   public async Task<iactionresult> Download([FromQuery] string file) {
       var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
       var filePath = Path.Combine(uploads, file);
       if (!System.IO.File.Exists(filePath))
           return NotFound();

       var memory = new MemoryStream();
       using (var stream = new FileStream(filePath, FileMode.Open))
       {
           await stream.CopyToAsync(memory);
       }
       memory.Position = 0;

       return File(memory, GetContentType(filePath), file);
   }

此片段来自 here:我的代码略有不同。