【发布时间】:2013-08-19 11:29:01
【问题描述】:
我正在尝试在 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 被检测为控制器 名称(不正确)
如果我切换路由,则租户路由有效,但基础路由无效。
我在这里缺少什么,是否有可能实现这一目标?
请注意,我希望不必在路由中指定虚拟租户字符串,因为稍后我必须在需要解析租户特定信息的几个地方将其翻译回来。 em>
【问题讨论】:
-
这里的租户是什么?是Action的参数吗?
-
租户不是动作参数,它只是我可以在 mvc 管道的其他地方使用的额外信息,用于解决租户特定的依赖项和视图等
标签: asp.net-mvc-4 asp.net-mvc-routing multi-tenant