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