ایجاد فیلتر برای هدایت همهی درخواستها به صفحهی «در حال بهروزرسانی» در برنامههای ASP.NET MVC
نویسنده: داود میرزایی
تاریخ: ۱۳۹۹/۰۵/۰۸ ۲۰:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
مواقع زیادی اتفاق میافتد که باید کار خاصی، بر روی سایتی که publish شده انجام بدیم. مثلا قرار هست یک بهروزرسانی انجام بدیم یا هر عملیات خاصی دیگری. در این موارد اگر بخواهیم کاربر نتواند وارد سایت شود، اما سایت برای خودمان باز باشد تا بتوانیم عملیاتی را انجام دهیم، فیلتری را مینویسیم که همهی کاربران غیر از خودمان را به صفحهی HTML سادهای که قبلا طراحی کردهایم، منتقل کند. مثلا در این صفحه نوشته شده «در حال بروز رسانی هستیم ...»
public sealed class DownForMaintenanceAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var path = System.Web.Hosting.HostingEnvironment.MapPath("~/down.html");
var ip = WebConfigurationManager.AppSettings["MaintenanceIp"];
if (System.IO.File.Exists(path) && HttpContext.Current.Request.UserHostAddress != ip)
{
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.Redirect("~/down.html");
return;
}
base.OnActionExecuting(filterContext);
}
} <add key="MaintenanceIp" value="x.x.x.x" />
filters.Add(new DownForMaintenanceAttribute());
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var ip = WebConfigurationManager.AppSettings["MaintenanceIp"];
var isOffline= WebConfigurationManager.AppSettings["OffLine"];
if (isOffline == "True" && HttpContext.Current.Request.UserHostAddress != ip)
{
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.Redirect("~/down.html");
return;
}
base.OnActionExecuting(filterContext);
}