微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在将一个小型的MVC 5网站移植到MVC 6,以发现重大变化.东西正在破碎.

MVC 5代码使用@ File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))来获取时间戳,如建议的here.显然在MVC 6中,.cshtml页面不再具有Server或VirtualPath成员.什么是新的咒语?

解决方法

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

您应该使用MS docs中描述的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();
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐