اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
مواقع زیادی اتفاق میافتد که باید کار خاصی، بر روی سایتی که 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); } }
ابتدا فایل HTML، در پوشهی پروژه جستجو میشود. همچنین آدرس ip ای که میتواند سایت را مشاهده کند، از web.config خوانده میشود. اگر چنین فایلی مثلا (down.html) در پروژه موجود بود، تمام درخواستهایی را که به سمت سایت میاید، به این صفحه هدایت میکنیم؛ غیر از درخواستهایی که از ip ذکر شده به سمت سایت میآیند (یعنی ip خودمان).
کد web.config
<add key="MaintenanceIp" value="x.x.x.x" />
filters.Add(new DownForMaintenanceAttribute());