2016-11-05 12 views
1

Я хочу поместить последнюю измененную дату (файл .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-адреса.

+0

это не может быть достаточно, но, возможно, родовое: 'MyFile = Server.MapPath (Request.ApplicationPath + "//sample1.aspx");' – wazz

+0

@wazz добавляющим ' .aspx' является очевидным обходным решением, но мне любопытно узнать, есть ли способ проверить дату, которая не будет разваливаться, если я буквально что-либо буду делать с маршрутами. Тем более, что мы знаем, что в рамках KNOWS файл - а именно, он не смог бы сгенерировать страницу иначе. – Dragomok

ответ

0

попробовать это ниже код:

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

Я ценю ответ, но 'Request == Page.Request' возвращает' true', поэтому ваше решение функционально идентично 'Request.PhysicalPath', которое я уже пробовал. – Dragomok

 Смежные вопросы

  • Нет связанных вопросов^_^