Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 检查每个页面请求上的条件_Asp.net Mvc_Redirect - Fatal编程技术网

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

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

在哪里可以最好地使用检查域是否在数据库中的功能?如果子域不在数据库中,则应重定向到
错误
控制器中的
索引
操作


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。在调用任何控制器或操作之前,我需要更早的过滤器。