我正在寻找一种方法来从使用Unity IoC容器的MVC Web应用程序动态地切换设置。ASP.NET MVC和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;
}
我们公司谁所有使用自己的数据库中不同的团队服务器(具有相同的模式)。管理员提出的解决方案是让多个Web应用程序实例运行,因此您可以选择适用于特定团队的任何URL。我宁愿只运行一个Web应用程序,让团队选择他们希望应用程序连接的数据库(以及其他配置设置)(理想情况下通过下拉菜单或某种类型的菜单)。
我有点难以忍受,但我怎么能实现这个目标。统一容器需要为每个团队配置不同(也许我需要多个静态实例?),并且需要更改控制器中直接访问的其他配置设置。我想这应该是一个相对普遍的问题,是否有标准的解决方案?
可能的重复:http://stackoverflow.com/questions/1900415/what-is-the-best-way-to-dynamic-load-connection-strings – 2011-05-09 12:51:09
@标记我不认为这是一个重复的所有。我的问题,据我了解,使用DI意味着我的所有连接字符串都固定在application_start上。我如何/在哪里可以查字典/用户团队或其他? Unity正在从对象根注入我的连接字符串。 – fearofawhackplanet 2011-05-09 13:12:55
您需要将运行时值映射到依赖项:http://stackoverflow.com/questions/1943576/is-there-a-pattern-for-initializing-objects-created-via-a-di-container/ 1945023#1945023 – 2011-05-09 13:18:49