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

时间:2011-04-13 19:45:57

标签: asp.net-mvc-3 routing

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

基本上,我需要有不同的路由,具体取决于输入应用程序的域。有人做过这样的事吗?

2 个答案:

答案 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
}

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

答案 1 :(得分:0)

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