如何在 ASP.NET Core MVC 中获取文件的最后修改日期?

Pau*_*ams 7 c# asp.net-core-mvc

我正在将一个小型 MVC 5 网站移植到 MVC 6 以发现重大更改。东西坏了。

MVC 5 代码用于@File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))获取时间戳,如此处推荐的那样。显然在 MVC 6 中,.cshtml 页面不再有ServerVirtualPath成员。新的咒语是什么?

Pau*_*ams 4

18 个月后重新审视我自己的问题...框架现在是 ASP.NET Core 2.0 MVC,框架、文档和最佳实践似乎已经发生了一些变化。

您应该使用MS 文档中描述的 FileProvider 。在这里重新创建该文章没有意义,但请务必:

  • 将 IHostingEnvironment 添加到 Startup构造函数参数中,并将其保存在局部变量中,如文档中所述
  • 在 Startup.ConfigureServices() 中,调用services.AddSingleton(HostingEnvironment.ContentRootFileProvider);注册 IFileProvider 服务,文档中也有描述
  • 将 IFileProvider 添加到控制器的构造函数参数中,并将其保存在局部变量中

然后,为了实际获取最后修改日期,控制器将如下所示:

public class HomeController : Controller
{
    private IFileProvider _fileProvider;

    public HomeController(IFileProvider fileProvider)
    {
        _fileProvider = fileProvider;
    }

    public IActionResult Index()
    {
        DateTimeOffset lastModifiedDate = _fileProvider.GetFileInfo(@"Views\Home\Index.cshtml").LastModified;
        // use it wisely...
        return View();
    }
Run Code Online (Sandbox Code Playgroud)