2010-10-14 22 views
0

我有多租戶ASP.NET MVC應用程序,它利用子域來確定當前租戶。通過數據庫表查找來確定域是否有效。檢查每個頁面請求的條件

哪裏會有最好的地方有一個函數來檢查域是否在數據庫中?如果子域不在數據庫中,它應該重定向到控制器中的Index動作。

將支票放在方法中的Global.asax文件不起作用,因爲會產生永不結束的重定向。

回答

1

會在哪裏有最好的地方一個函數,檢查域是否在數據庫中?如果子域不在數據庫中,它應該重定向到錯誤控制器中的Index操作。

將檢查放在Global.asax文件的Application_BeginRequest方法中不起作用,因爲會產生永不結束的重定向。

這是正確的地方,你只需要檢查請求的URL是不是已經/錯誤。

您可能已經這樣做了,但我想補充一點,它應該是緩存,而不是每個請求的數據庫。

+0

「Application_BeginRequest」困擾的一件事是CSS/JS/Image鏈接觸發了該函數,所以我必須有一個條件來檢查該文件是否存在,如果存在,該函數將返回。但我認爲這是因爲Cassani WebServer。 – Omar 2010-10-14 19:21:08

0

您可以繼承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 
} 
+0

在任何控制器或操作被調用之前,我需要更早的過濾器。 – Omar 2010-10-14 19:21:54

相關問題