Параметры конфигурации переключения ASP.NET MVC и IoC динамически - PullRequest
0 голосов
/ 09 мая 2011

Я ищу способ динамического переключения настроек из веб-приложения MVC, использующего контейнер Unity IoC.

У меня есть статический экземпляр контейнера, настроенный в Global.asax.cs

 private static IUnityContainer _container;

 protected void Application_Start()
 {
     AreaRegistration.RegisterAllAreas();
     RegisterRoutes(RouteTable.Routes);
     InitializeUnityContainer(); 
 }

и затем фабрика пользовательских контроллеров

protected override IController GetControllerInstance(
                       RequestContext reqContext, Type controllerType)
{
    // ... (some argument checking here)

    return _container.Resolve(controllerType) as IController;        
}

У нас есть разные команды внутри компании, которые используют свои собственные серверы баз данных (с одинаковыми схемами). Предложенное решение от руководства состоит в том, чтобы запустить несколько экземпляров веб-приложения, поэтому вы переходите на любой URL для вашей конкретной команды. Я бы предпочел запустить только одно веб-приложение и попросить команды выбрать, к какой базе данных (и другим параметрам конфигурации) они хотят подключить приложение (в идеале через раскрывающийся список или меню какого-либо типа).

Я немного озадачен тем, как я могу достичь этого, хотя. Контейнер для единства должен был бы быть настроен по-разному для каждой команды (может быть, мне потребовалось бы несколько статических экземпляров?), И другие параметры конфигурации, доступ к которым осуществлялся непосредственно в контроллерах, пришлось бы изменить. Я предполагаю, что это должно быть относительно распространенной проблемой, есть ли стандартное решение?

1 Ответ

1 голос
/ 09 мая 2011

Я не думаю, что размещение всех команд в одном приложении будет работать хорошо - все, что у вас есть, не относится к области запроса, не будет работать правильно - например.любые данные или статические поля в области приложения могут вызывать проблемы, которые задаются только первым посетителем, или постоянно переопределены.

...