是否可以在application_start之后注册路线?在我们的多租户应用程序中,客户正在创建自己的网站(www.domaina.com,www.domainb.com等),这些都指向我们的应用程序。客户可以定义他们想要的网站页面。因此,我们可以在AppStart中注册所有相应的路由,但如果客户添加了新路由,那么应用程序将如何知道如何提供该URL?我尝试在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
}
另一种选择: 您可以添加自定义约束以进行路由。约束将检查当前域是否可以访问特定页面。
答案 1 :(得分:0)
您可以在运行时更改路由,但是一旦更改了路由,它就会对使用相同应用程序的所有域都相同。一种解决方案可以是为每个路由配置使用此应用程序的不同实例,而不是基于特定于实例的域名进行配置。