2011-04-13 59 views
1

是否可以在application_start之後註冊路由?在我們的多租戶應用程序中,客戶正在創建自己的網站(www.domaina.com,www.domainb.com等),這些都指向我們的應用程序。客戶可以定義他們想要的網頁。因此,我們可以在AppStart中註冊所有相應的路線,但是如果客戶添加了新路線,那麼應用程序知道如何提供該網址?我嘗試在BeginRequest中註冊路線,但這似乎沒有做好。爲每個域(多租戶)動態註冊路由

基本上,我需要根據應用程序通過哪個域輸入不同的路線。任何人都做過這樣的事情?

回答

0

您可以在運行時更改路由,但是一旦您對其進行了更改,對於使用相同應用的所有域來說都是一樣的。一個解決方案可以是爲每個路由配置使用此應用程序的不同實例,而不是根據實例特定的域名進行配置。

2

您可以創建自定義路線。

public class MyRoute : RouteBase 
{ 
    private readonly RoutesRepository _routesRepository; 

    public MyRoute(RoutesRepository routesRepo) 
    { 
     _routesRepository = routesRepo; 
    } 

    #region Overrides of RouteBase 

    public override RouteData GetRouteData(HttpContextBase httpContext) 
    { 
     //Here you get all custom urls(that users have created) for current domain. Then try to match request url with urls from collection. If ok then create route and return it. 
    } 

    ... 

    #endregion 
} 

另一種選擇: 您可以添加自定義的約束路由。約束將檢查當前域是否有權訪問特定頁面。