Asp.net mvc 3 MVC 3多租户体系结构的灵活动态路由

Asp.net mvc 3 MVC 3多租户体系结构的灵活动态路由,asp.net-mvc-3,asp.net-mvc-routing,multi-tenant,Asp.net Mvc 3,Asp.net Mvc Routing,Multi Tenant,我想创建一个多租户网站,其中每个租户可以创建多个门户 类似于Dotnetnuke所做的。 我想提供一个灵活的动态路由(可以在运行时生效,例如。 我可以在运行时添加租户),如下所述。 我还喜欢允许/限制租户使用某些模块(区域(控制器组) 用于粗粒度访问控制或用于细粒度访问控制的控制器)和 控制器用于最精细访问控制的操作 租户不拥有域或子域-使用SaaS主机域名) 租户拥有一个域或子域) 给定各种组合,我希望根据每个租户的配置提取租户密钥。 我还想提取门户编号(它可以是门户的唯一编号或唯一名

我想创建一个多租户网站,其中每个租户可以创建多个门户 类似于Dotnetnuke所做的。 我想提供一个灵活的动态路由(可以在运行时生效,例如。 我可以在运行时添加租户),如下所述。 我还喜欢允许/限制租户使用某些模块(区域(控制器组) 用于粗粒度访问控制或用于细粒度访问控制的控制器)和 控制器用于最精细访问控制的操作

  • 租户不拥有域或子域-使用SaaS主机域名)

  • 租户拥有一个域或子域)


给定各种组合,我希望根据每个租户的配置提取租户密钥。 我还想提取门户编号(它可以是门户的唯一编号或唯一名称)

门户编号之后的所有内容都将通过正常路由值
{controller}/{action}

tenant1.com[/portal0]
“[]”内容位于可选框中的括号内,它将被视为“portal0”

下面是一些好的想法。这篇文章很旧。我想知道MVC3中是否有新的东西


如果每个门户的内容都是从数据库中获取的,那么最好的办法就是连接到一个扩展点。

tenant1.saasplatform.com ( implicitly means has /portal0 suffix )
tenant1.saasplatform.com/portal0
tenant1.saasplatform.com/portal1

saasplatform.com/tenant1  ( implicitly means has /portal0 suffix )
saasplatform.com/tenant1/portal0
saasplatform.com/tenant1/portal1
tenant1.com ( implicitly means has /portal0 suffix )
tenant1.com/portal0
tenant1.com/portal0

tenant1.com  ( implicitly means has portal0. prefix )
portal0.tenant1.com
portal1.tenant1.com
{tenantkey}{portal0}

tenant1.saasplatform.com[/portal0] 
{tenantkey}.saasplatform.com}{portal0}
{tenantkey}.othersaasplatform.com}{portal0}

[portal0.]tenant1.com
{portalkey}.{tenantkey}