Я хочу поместить последнюю измененную дату (файл .aspx отвечает за) просматриваемой в настоящее время страницы в нижнем колонтитуле веб-формы.Получить фактическую последнюю измененную дату для запрашиваемой страницы в WebForms
Я работаю над шаблоном веб-форм по умолчанию из Visual Studio 2015 и создаю проект для .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
- т.е. веб-маршрут, наклеенный на физический корень, вместо файлаC:\imaginelikeapathheredude\about.aspx
позади маршрута, - (
http://localhost:11111/contact.aspx
перенаправляет наhttp://localhost:49480/contact
и не изменяет вывод каких-либо функций, упомянутых в этом вопросе).
Существует множество альтернативных решений для получения файла, предлагаемых по всей сети (и на 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, но кажется коротким, расплывчатым и плохо сформулированным - SO's Похожие вопросы и я сам думаю о том, чтобы получить файл .aspx
, в то время как его два ответа предполагают получение URL-адреса.
это не может быть достаточно, но, возможно, родовое: 'MyFile = Server.MapPath (Request.ApplicationPath + "//sample1.aspx");' – wazz
@wazz добавляющим ' .aspx' является очевидным обходным решением, но мне любопытно узнать, есть ли способ проверить дату, которая не будет разваливаться, если я буквально что-либо буду делать с маршрутами. Тем более, что мы знаем, что в рамках KNOWS файл - а именно, он не смог бы сгенерировать страницу иначе. – Dragomok