Asp.net mvc 4 在mvc中支持多租户路由
我正在尝试在asp.net mvc 4中设置一个多租户解决方案,在该解决方案中,如果某些控制器需要不同的功能,您可以为它们指定特定于租户的覆盖 我想有这样的路线Asp.net mvc 4 在mvc中支持多租户路由,asp.net-mvc-4,asp.net-mvc-routing,multi-tenant,Asp.net Mvc 4,Asp.net Mvc Routing,Multi Tenant,我正在尝试在asp.net mvc 4中设置一个多租户解决方案,在该解决方案中,如果某些控制器需要不同的功能,您可以为它们指定特定于租户的覆盖 我想有这样的路线 /{Controller}/{Action}/{Id}/ /{Tenant}/{Controller}/{Action}/{Id} 如果未指定租户,则该租户应与第一条路由匹配 我试过了 routes.MapRoute( name: "Default", url: "{co
/{Controller}/{Action}/{Id}/
/{Tenant}/{Controller}/{Action}/{Id}
如果未指定租户,则该租户应与第一条路由匹配
我试过了
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
name: "Tenant",
url: "{tenant}/{controller}/{action}/{id}",
defaults: new { tenant = "", controller = "Home", action = "Index", id = UrlParameter.Optional });
这适用于以下情况:
- /->检测到第一条路线(正确!)
- /主页->检测为 第一条路线(正确!)
- /主页/索引->检测为第一条路由 (正确!)
- /Client1/Home/Index-Client1被检测为控制器 姓名(不正确)
注意,我不希望在路由中指定虚拟租户字符串,因为稍后我将不得不在一些需要解析租户特定信息的地方将其翻译回。您可以使用我编写的库。如果路由冲突,此库允许您定义备用路由。必须按如下方式定义管线:
var firstRoute = routes.MapReplaceableRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
var secoundRoute = routes.MapRoute(
name: "Tenant",
url: "{tenant}/{controller}/{action}/{id}",
defaults: new { tenant = "", controller = "Home", action = "Index", id =
UrlParameter.Optional }, lookupParameters: new string[] {"tenant"}, lookupService: new LookupService());
firstRoute.AlternativeRoute = secondRoute;
对于lookupService,您只需要IRouteValueLookupService的空实现。这里的租户是什么?它是行动的参数吗?租户不是行动的参数,它只是额外的信息,我可以在mvc管道的其他地方使用它来解决租户特定的依赖关系和视图。etclooks承诺会给它一个成功的机会。到代码的链接断开了。有人有副本吗?