为每个域(多租户)动态注册路由

问题描述:

是否可以在application_start之后注册路由?在我们的多租户应用程序中,客户正在创建自己的网站(www.domaina.com,www.domainb.com等),这些都指向我们的应用程序。客户可以定义他们想要的网页。因此,我们可以在AppStart中注册所有相应的路线,但是如果客户添加了新路线,那么应用程序知道如何提供该网址?我尝试在BeginRequest中注册路线,但这似乎没有做好。为每个域(多租户)动态注册路由

基本上,我需要根据应用程序通过哪个域输入不同的路线。任何人都做过这样的事情?

您可以在运行时更改路由,但是一旦您对其进行了更改,对于使用相同应用的所有域来说都是一样的。一个解决方案可以是为每个路由配置使用此应用程序的不同实例,而不是根据实例特定的域名进行配置。

您可以创建自定义路线。

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 
} 

另一种选择: 您可以添加自定义的约束路由。约束将检查当前域是否有权访问特定页面。