获取WebForms中所请求页面的实际上次修改日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取WebForms中所请求页面的实际上次修改日期相关的知识,希望对你有一定的参考价值。

我想将当前查看页面的(.aspx文件负责)的最后修改日期放入Web窗体站点的页脚。

我正在使用Visual Studio 2015中的默认Web窗体模板并构建.NET 4.5项目。在Site.Master,我修改了这样的页脚:

<footer>
    <p>
        Page last updated on:
        <asp:Label ID="modyfikacja" runat="server" Text="coś nie poszło" />
    </p>
</footer>

并且在Page_Load()中修改了Site.Master.cs方法,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    string _site = Server.MapPath(HttpContext.Current.Request.Url.AbsolutePath);
    modyfikacja.Text = "(" + _site + ") " + File.GetLastWriteTime(_site).ToString();
}

不幸的是,这实际上并不是一直有效:

  • 当我去http://localhost:11111时,它正确返回文件路径C:imaginelikeapathheredudedefault.aspx的日期,
  • 但是,当我去,例如,http://localhost:11111/About,它试图得到文件路径C:imaginelikeapathheredudeAbout的日期 - 即。 web路由粘贴到物理根,而不是路由后面的C:imaginelikeapathheredudeabout.aspx文件,
  • http://localhost:11111/contact.aspx重定向到http://localhost:49480/contact并且不会更改此问题中提到的任何函数的输出)。

获取文件有很多替代解决方案,建议遍及整个Web(以及StackOverflow),但它们都不起作用。如果我将_site变量更改为...

  • Request.PhysicalPath,没什么变化。
  • Server.MapPath(HttpContext.Current.Request.Url.AbsolutePath),没什么变化。
  • Server.MapPath(HttpContext.Current.Request.ServerVariables.Get("SCRIPT_NAME")),没什么变化。
  • HttpContext.Current.Request.ServerVariables.Get("PATH_TRANSLATED"),没什么变化。
  • HttpContext.Current.Request.ServerVariables.Get("SCRIPT_TRANSLATED"),我得到完全相同的文件路径,但前面有\?,应用程序崩溃,因为规范路径不是有效的文件路径。
  • Server.MapPath(Request.Url.LocalPath.ToString()),没什么变化。

那么 - 我怎么能得到那个.aspx文件?

PS。有a somewhat similar question,但它似乎短,模糊和措辞不好 - 所以类似的问题和我自己认为它是关于获取.aspx文件,而它的两个答案认为它是关于获取URL。

答案

试试以下代码:

string ASPXphysicalpath = Page.Request.PhysicalPath;
lblLastModified.Text = System.IO.File.GetLastWriteTime(ASPXphysicalpath).ToString();

以上是关于获取WebForms中所请求页面的实际上次修改日期的主要内容,如果未能解决你的问题,请参考以下文章

DataLake 文件 - 上次修改日期时间

如何从 pysftp 获取上次修改时间

SharePoint 上次修改日期和匿名访问

NSFileManager OS X 上次修改日期

2017-06-29在登录页面自动返回上次请求页面Js获取table中的行数与列数

使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期