代码之家  ›  专栏  ›  技术社区  ›  Omar

检查每个页面请求的条件

  •  0
  • Omar  · 技术社区  · 14 年前

    我有多租户ASP.NET MVC应用程序,它使用子域来确定当前租户。域是否有效通过数据库表查找来确定。

    哪里是拥有检查域是否在数据库中的函数的最佳位置?如果子域不在数据库中,则应重定向到 Index 行动在 Error 控制器。

    将支票放入 Application_BeginRequest 方法在 Global.asax 文件不起作用,因为一个永不结束的重定向结果。

    2 回复  |  直到 14 年前
        1
  •  1
  •   eglasius    14 年前

    哪里是拥有检查域是否在数据库中的函数的最佳位置?如果子域不在数据库中,则应重定向到错误控制器中的索引操作。

    将check放入global.asax文件中的application_beginrequest方法不起作用,因为重定向结果永不结束。

    这是正确的地方,您只需要检查请求URL是否已经存在/错误。

    您可能已经这样做了,但我想补充一点,您应该缓存的似乎是非常静态的信息,而不是针对每个请求访问数据库。

        2
  •  0
  •   Muhammad Adeel Zahid    14 年前

    您可以子类化actionfilter属性并重写onActionExecuting方法。在这种方法中,您可以进行任何数据库检查并适当地重定向用户。

    public class CustomActionFilterAttribute : ActionFilterAttribute
    {
         public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if(DatabaseLookup)
            {
               return;
            }
            filterContext.Result = new RedirectResult("http://servername/Error");
    
        }
    
    }
    

    现在你可以用这个定制的actionfilter属性来修饰你的action方法。

    [CustomActionFilter]
    public ActionResult mymethod()
    {
        //action method goes here
    }