Я работаю над простым мультитенантным приложением MVC2.У меня вопрос, как мне определить, какой портал арендатора запрашивается пользователем в URL?Что мне нужно, чтобы это произошло:
Два приведенных ниже пути достигают этого и, кажется,работают нормально.
routes.MapRoute(
"Client Portal Default", // Route name
"{clientportal}/{controller}/{action}/{id}", // URL with parameters
new { controller = "ClientPortalHome", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults,
);
Мой вопрос: как мне определить, какой клиентский портал был запрошен (client1 в приведенном выше примере)?
Я пытался использовать это:
private void Application_BeginRequest(Object source, EventArgs e)
{
var route = RouteTable.Routes.GetRouteData(new HttpContextWrapper(Context));
var currentPortal = route.GetRequiredString("clientportal");
Context.Items.Add("ClientPortalName", currentPortal);
}
Проблема заключается в том, что он вызывается для всех маршрутов и выдает исключение для случая контроллера Home, поскольку маршрут не содержит запись «clientportal».
Каков наилучший способ определить, какой портал имеетбыл запрошен, чтобы я мог убедиться, что он существует и показать клиентскую домашнюю страницу?Нужен ли мне собственный обработчик маршрута?
Заранее спасибо.
Рик