我正在尝试实现多租户 MVC3 应用程序。包括子域请求在内的所有 url 请求都被定向到主应用程序。解决方案是拥有默认的主控制器和一个名为“客户端”的区域。所以有2条路线。
这在客户区
context.MapRoute(
            "Client_default",
            "{controller}/{action}/{id}",
            new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
            new {controller = new ClientAreaConstraint()},
            new[] { "MainApp.UI.Areas.Clients.Controllers" });
这在全球asax
routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
            new[] { "MainApp.UI.Controllers" }
        );
一个用于区域,一个用于主要区域。在该区域的路由中,我添加了一个路由约束,用于检查 url 是否有子域,如果是则返回 true。
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        var url = httpContext.Request.Headers["HOST"];
        var clientName = url.Split('.')[1];
        return clientName != "mainsite";
    } 
这有效,区域控制器正在获取子域请求。但是当我尝试调用 return View() 时。它在主文件夹中而不是在区域文件夹中查找视图。我的网址看起来像这样 http://www.client.mainsite.com/并且没有区域名称。是不是因为这个?可能是什么问题呢 ?请帮忙