【发布时间】:2015-03-06 20:25:20
【问题描述】:
我正在处理更改现有 ASP.NET MVC 应用程序以支持多租户的要求。该应用程序是通过其他方式为“仅一个客户”构建的,每个客户都有一个 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 上填充,并且会一直保留在那里。
存储租户特定配置数据的选项有哪些?我查看了几个网站,找不到关于此的“良好做法”。如果我错过了一些有用的东西,请发表评论。谢谢!
【问题讨论】:
-
显然,在我的声望达到 50 之前,我无法发表评论...您的租户是否进入了不同的 URL?如果是这样,那不是将应用程序分开,并且每个应用程序都是唯一的吗?
标签: asp.net-mvc-4 multi-tenant