Unity IoC 컨테이너를 사용하는 MVC 웹 응용 프로그램에서 설정을 동적으로 전환하는 방법을 찾고 있습니다. 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;
}
우리 모두가 자신의 데이터베이스를 사용하는 회사 내 다른 팀이 서버 (동일한 스키마 포함). 관리에서 제안 된 솔루션은 웹 앱의 여러 인스턴스를 실행하여 특정 팀의 URL로 이동하는 것입니다. 차라리 하나의 웹 응용 프로그램을 실행하고 팀이 어떤 데이터베이스 (및 기타 구성 설정)를 선택하여 응용 프로그램을 (이상적으로 드롭 다운 또는 메뉴의 일부 유형을 통해) 연결하려고합니다.
나는 내가이 생각을 acheive 수있는 방법으로 난처한 상황에 빠진 조금입니다. 통합 컨테이너는 각 팀마다 다르게 구성되어야합니다 (아마도 다중 인스턴스가 필요합니다). 컨트롤러에서 직접 액세스하는 다른 구성 설정을 변경해야합니다. 나는 이것이 상대적으로 공통적 인 문제라고 생각할 것입니다. 표준 해결책이 있습니까?
가능한 복제본 : http://stackoverflow.com/questions/1900415/what-is-the-best-way-to-dynamic-load-connection-strings –
@ 마크 나는 그것이 전혀 중복되지 않는다고 생각합니다. . DI를 사용하면 모든 연결 문자열이 application_start에서 고정된다는 것을 이해하는 한 내 문제입니다. 사전/사용자 팀 또는 기타에 대해 어떻게/어디에서 조회 할 수 있습니까? Unity가 객체 루트에서 연결 문자열을 주입하고 있습니다. – fearofawhackplanet
당신은 의존성에 런타임 값을 매핑해야합니다 http://stackoverflow.com/questions/1943576/is-there-a-pattern-for-initializing-objects-created-via-a-di-container/ 1945023 # 1945023 –