У меня есть срок годности в моей базе данных, и я бы хотел перенаправить веб-страницу, когда была достигнута дата истечения срока действия этой страницы.Asp.net C# 301 перенаправление, когда страница истекла
Как мне это сделать?
Благодаря
У меня есть срок годности в моей базе данных, и я бы хотел перенаправить веб-страницу, когда была достигнута дата истечения срока действия этой страницы.Asp.net C# 301 перенаправление, когда страница истекла
Как мне это сделать?
Благодаря
Вы можете сделать это с помощью кэша для ваших страниц. Мне явно не известно, как вы храните даты истечения срока действия, но я предполагаю, что у вас есть [exp_date: url].
Итак:
protected void Application_Start(object sender, EventArgs e)
{
Dictionary<Datetime, string> pages = Read_from_database();
Context.Cache.Insert("ExpireCache", pages, new CacheDependency(m_strPath),
System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration,
CacheItemPriority.Default);
}
И
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.AbsolutePath == "page_expired.aspx")
{
return;
}
var cache = HttpContext.Current.Cache["ExpireCache"];
if (cache.ContainsKey(HttpContext.Current.Request.RawUrl) &&
cache[HttpContext.Current.Request.Url.AbsolutePath] < DateTime.Now)
{
HttpContext.Response.Current.Redirect("page_expired.aspx");
}
}
Вы можете дополнительно добавить SqlDbDependency в кэш, так что он обновляется, когда вы изменяете истекают даты в базе данных ...
Вы можете поместить Trigger
на вас базу данных. Это срабатывает через определенное время или действие, а затем проверяет дату, чтобы убедиться, что она истекло.
Если это простой блок кода, подобный этому, он может выполнить эту работу.
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://mySite.com"))
{
HttpContext.Current.Response.Status = "301 Moved Permanently";
HttpContext.Current.Response.AddHeader("Location",
Request.Url.ToString().ToLower().Replace(
"http://mySite.com",
"http://www.myNewSite.com"));
}
Надеется, что это помогает
Вы можете использовать этот код для постоянной переадресации. @phadaphunk solution redirect Прописные буквы на маленькие буквы.
string authority = Request.Url.Authority;
if (authority.IndexOf("www.") != 0)
{
Response.StatusCode = 301;
Response.RedirectPermanent("http://www." + authority + Request.Url.AbsolutePath, true);
}
Обратите внимание, что метод Response.RediectPermanent доступен только для .Net 4.0, я думаю, в противном случае вы должны использовать редирект()
Используя 'if' заявление? Что вы пробовали? С чем вы столкнулись? – SLaks
Я думаю о том, как я это сделаю. Мне понадобится сервер, чтобы каждый раз запускать бит кода или создавать что-то в админ-системе, которая проверяет страницы с истекшим сроком действия, если он находит один, я хочу, чтобы он перенаправлял страницу на домашнюю страницу. Но я не знаю, с чего начать. Все базы данных управляются, поэтому фактические страницы не существуют. как wordpress –