Asp.net mvc 检查每个页面请求上的条件
我有一个多租户ASP.NET MVC应用程序,它利用子域来确定当前租户。通过数据库表查找确定域是否有效 在哪里可以最好地使用检查域是否在数据库中的功能?如果子域不在数据库中,则应重定向到Asp.net mvc 检查每个页面请求上的条件,asp.net-mvc,redirect,Asp.net Mvc,Redirect,我有一个多租户ASP.NET MVC应用程序,它利用子域来确定当前租户。通过数据库表查找确定域是否有效 在哪里可以最好地使用检查域是否在数据库中的功能?如果子域不在数据库中,则应重定向到错误控制器中的索引操作 在Global.asax文件中的应用程序\u BeginRequest方法中进行检查不起作用,因为会产生无止境的重定向结果。u可以将actionFilter属性子类化并覆盖onactionExecuting方法。在这种方法中,您可以进行任何数据库检查并适当地重定向用户 public cla
错误
控制器中的索引
操作
在
Global.asax
文件中的应用程序\u BeginRequest
方法中进行检查不起作用,因为会产生无止境的重定向结果。u可以将actionFilter属性子类化并覆盖onactionExecuting方法。在这种方法中,您可以进行任何数据库检查并适当地重定向用户
public class CustomActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(DatabaseLookup)
{
return;
}
filterContext.Result = new RedirectResult("http://servername/Error");
}
}
现在你可以用这个定制的actionfilter属性来修饰你的动作方法
[CustomActionFilter]
public ActionResult mymethod()
{
//action method goes here
}
在哪里最好有一个函数来检查域是否在数据库中?如果子域不在数据库中,它应该重定向到错误控制器中的索引操作
在Global.asax文件中的应用程序_BeginRequest方法中进行检查不起作用,因为会导致无止境的重定向
这是正确的位置,您只需要检查请求Url是否已存在/Error
你可能已经这么做了,但是我想补充一点,您应该缓存相当静态的信息,而不是针对每个请求访问数据库。困扰
应用程序的一件事是CSS/JS/Image链接触发了函数,因此我必须有一个条件来检查该文件是否存在,如果存在,函数将返回。但我认为这是因为Cassani WebServer。在调用任何控制器或操作之前,我需要更早的过滤器。