目前我有一个MVC应用程序,它还包含WebApi控制器。
我已经使用默认约定设置StructureMap来初始化,这些约定处理MVC和WebApi的服务依赖性。这一切都很完美。
但是,我有一个身份验证服务依赖项,应该为WebApi注入,并为MVC注入不同的实现。由于StructureMap具有相同的初始化引导代码,如何根据请求是WebApi端点还是Mvc控制器端点进行切换?
答案 0 :(得分:1)
不知道这是否是实现此目的的最佳方法,但我使用ObjectFactory.Configure方法在启动时覆盖初始化注册表,但是在Mvc的DependencyResolver.SetResolver和WebApi的GlobalConfiguration.Configuration上的每个SetResolver中执行此操作。 .ServiceResolver.SetResolver。
e.g。
ObjectFactory.Configure(x => x.For<IAuthenticationService>()
.Use(s => s.GetInstance<IMvcAuthenticationService>()));
和
ObjectFactory.Configure(x => x.For<IAuthenticationService>()
.Use(s => s.GetInstance<IWebApiAuthenticationService>()));