3

目前我有一個也包含WebApi控制器的MVC應用程序。如何使用StructureMap向WebApi控制器注入不同的依賴關係使用StructureMap

我已經設置了StructureMap,使用默認約定來處理MVC和WebApi的服務依賴關係。這一切都完美。

但是,我有一個身份驗證服務依賴項,應該注入WebApi和MVC的不同實現。由於StructureMap具有相同的初始化引導程序代碼,因此根據進入的請求是WebApi端點還是Mvc控制器端點,我該如何切換?

回答

1

不知道這是否是實現此目的的最佳方式,但我使用ObjectFactory.Configure方法覆蓋啓動時的初始化註冊表,但是在Mvc的DependencyResolver.SetResolver和WebApi的GlobalConfiguration上的每個SetResolver中執行此操作。 Configuration.ServiceResolver.SetResolver。

例如

ObjectFactory.Configure(x => x.For<IAuthenticationService>() 
         .Use(s => s.GetInstance<IMvcAuthenticationService>())); 

ObjectFactory.Configure(x => x.For<IAuthenticationService>() 
         .Use(s => s.GetInstance<IWebApiAuthenticationService>())); 
相關問題