我正在努力改变现有的ASP.NET MVC应用程序以成为多租户。该应用程序是为#34;只有一个客户"通过其他方式,对于每个客户,都有新的MVC应用程序安装。该应用程序的数据库结构准备好了多个"一个MVC应用程序内的网站,所以所有的数据库查询已经采用"网站"考虑(siteId)。
关于多租户应用,我有几个问题,我还在研究它。今天我开始对MVC应用程序进行更改,我遇到了一件事。该应用程序有一个包含多个配置的表。像AppSMTPServer,AppShowLoginBox等等。这些是为使应用程序动态而创建的参数。
所有这些配置当前都存储在静态类中的ApplicationState中,如下所示:
public static IDictionary<String, String> Configurations
{
get
{
if (HttpContext.Current.Application[CONFIGURATIONS] == null)
{
LoadConfiguration();
}
return (IDictionary<String, String>)HttpContext.Current.Application[CONFIGURATIONS];
}
private set
{
HttpContext.Current.Application[CONFIGURATIONS] = value;
}
}
我的问题是。如果我将MVC更改为准备好多租户,则每个租户都将拥有自己的配置值。因此,我不能将它们存储在ApplicationState中,因为它将填充在application_start上并将保持在那里。
存储租户特定配置数据的选项有哪些?我查看了几个网站,无法找到一个好的做法&#34;就此而言。如果我错过了一些有用的东西,请发表评论。谢谢!
答案 0 :(得分:2)
根据我构建多租户应用程序的经验,这个用例可以按如下方式处理,