获取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中所请求页面的实际上次修改日期的主要内容,如果未能解决你的问题,请参考以下文章