我正在尋找一種方法來從使用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