我们目前正在开发一个asp.net mvc3 (aspx)的多租户网站。我们在web.config中创建了一个租户配置部分,其结构如下:
在我们的代码中,我们有一个租户生成器,可以从ITenant接口创建具体类。一旦我们能够解决问题,每个租户的网站都可以正常运行。然而,我不太满意我们正在做的两件事情。同时请注意,虽然我们正在进行依赖注入,但我们没有使用第三方IOC容器(所有DI都是自定义的)。
1. 控制器操作覆盖-目前我们在租户中有一些方法作为控制器操作覆盖(返回ActionResult),这些方法在实际控制器操作中被调用。例如-如果我们需要针对Home/Index的特定于租户的逻辑,我们会这样做:return currentTenant.HomeIndex()。是否可以使用ControllerFactory或ServiceLocator来替代这种方式?如果可以,有人能解释一下最好的方法吗?
2. 访问-现在我们的两个租户相当于以下内容:client1=免费用户,client2=付费用户。虽然我们使用MembershipProvider来授权用户,但我们创建了一个ActionFilter来检查用户类型/级别并继续或重定向到适当的站点。有更聪明的方法来进行这些检查吗?
提前感谢。
<tenants>
<tenant name="client1" baseUrl="client1.domain.com">
<settings>
<setting name="siteName" value="client 1 site">
</settings>
</tenant>
<tenant name="client2" baseUrl="client2.domain.com">
<settings>
<setting name="siteName" value="client 2 site">
</settings>
</tenant>
</tenants>
在我们的代码中,我们有一个租户生成器,可以从ITenant接口创建具体类。一旦我们能够解决问题,每个租户的网站都可以正常运行。然而,我不太满意我们正在做的两件事情。同时请注意,虽然我们正在进行依赖注入,但我们没有使用第三方IOC容器(所有DI都是自定义的)。
1. 控制器操作覆盖-目前我们在租户中有一些方法作为控制器操作覆盖(返回ActionResult),这些方法在实际控制器操作中被调用。例如-如果我们需要针对Home/Index的特定于租户的逻辑,我们会这样做:return currentTenant.HomeIndex()。是否可以使用ControllerFactory或ServiceLocator来替代这种方式?如果可以,有人能解释一下最好的方法吗?
2. 访问-现在我们的两个租户相当于以下内容:client1=免费用户,client2=付费用户。虽然我们使用MembershipProvider来授权用户,但我们创建了一个ActionFilter来检查用户类型/级别并继续或重定向到适当的站点。有更聪明的方法来进行这些检查吗?
提前感谢。