显示一个快速维护页面(但仍然允许我访问应用程序)-快速修复
本文关键字:访问 允许我 应用程序 一个 维护 显示 | 更新日期: 2023-09-27 18:03:37
我想要一个真正快速的修复,以防止所有访问一个网站,除非网址有dev=passcode
在它。
我尝试创建一个BaseController:
public class BaseController : Controller
{
public BaseController()
{
if( Request.Params[ "dev" ] != "something" )
{
this.MaintenancePage();
}
}
public ActionResult MaintenancePage()
{
return View();
}
}
然后所有其他控制器都从它派生出来
class HomeController : BaseController
{
private IUnitOfWork unitOfWork;
public HomeController( IUnitOfWork uow ){..}
public ActionResult Index(){...}
}
问题是,在BaseController中,请求此时为空。
有什么快速解决办法吗?
可以覆盖OnActionExecuting
。在这里,Request
将已经创建,OnActionExecuting
将在控制器中的任何操作之前被调用。
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string actionName = filterContext.ActionDescriptor.ActionName;
if( Request.Params["dev"] != "something" && !String.Compare(actionName, "MaintenancePage", StringComparison.InvariantCultureIgnoreCase))
{
filterContext.Result = RedirectToAction("MaintenancePage");
}
}
public ActionResult MaintenancePage()
{
return View();
}
}
注意:如果适合的话,您可以在Action过滤器中移动此行为