我正在尝试在 asp.net mvc 4 中设置多租户解决方案,如果某些控制器需要不同的功能,您可以在其中指定租户特定的覆盖。
我想要这样的路线
/{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 });
这适用于
- / -> 检测为第一条路线(正确!)
- /Home -> 检测为第一条路线(正确!)
- /Home/Index -> 检测为第一条路线(正确!)
- /Client1/Home/Index - Client1 被检测为控制器名称(不正确)
如果我切换路线,则租户路线有效,但基本路线无效。
我在这里缺少什么,是否有可能实现这一目标?
请注意,我宁愿不必在路由中指定虚拟租户字符串,因为稍后我必须在需要解析租户特定信息的几个地方将其翻译回来。