我搜索了一些例子,发现了几个,但它们都是大型项目。我正在寻找一些关于如何开始构建MVC多租户应用程序的示例。我认为,第一部分是破译网址。
在ASP.Net中,我就是这样做的。我从查看DNN代码得到了这个。 我将如何在MVC中执行相同操作?
Global.asax中
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string domainName = string.Empty;
// domaName now contains 'example' if application.Request was www.example.com
domainName = GetDomainName(application.Request);
// Using domain, get the info for example from the database
object myPortal = // get from database
// Save in context for use on other pages
context.Items.Add("PortalSettings", myPortal);
}
然后在我的基页中,我从上下文中获取值。
答案 0 :(得分:4)
我认为更强大的方法是定义自定义路线。在该自定义路由中,您可以提取域并将其放入路由值中。
然后,您可以拥有定义域属性等的基本控制器(如Josh描述的那样)并在那里存储该值以方便(或者只是按需提取它;无论哪种方式)。
通过预先将其拉入路线值,您可以在应用程序的任何位置沿着请求路径使用该信息,而不仅仅是在控制器中,这样您就可以通过这种方式获得更多的重用。例如,您可以在自定义类似授权的过滤器中使用它来处理用户对该域的权限,等等。
答案 1 :(得分:2)