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

问题描述 投票:1回答:1

我想将当前查看页面的(.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:\imaginelikeapathheredude\default.aspx的日期,
  • 但是,当我去,例如,http://localhost:11111/About,它试图得到文件路径C:\imaginelikeapathheredude\About的日期 - 即。 web路由粘贴到物理根,而不是路由后面的C:\imaginelikeapathheredude\about.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。

asp.net webforms last-modified
1个回答
1
投票

试试以下代码:

string ASPXphysicalpath = Page.Request.PhysicalPath;
lblLastModified.Text = System.IO.File.GetLastWriteTime(ASPXphysicalpath).ToString();
© www.soinside.com 2019 - 2024. All rights reserved.