3

目前我有一个 MVC 应用程序,它还包含 WebApi 控制器。

我已经设置了 StructureMap 以使用默认约定进行初始化,该约定处理 MVC 和 WebApi 的服务依赖项。这一切都完美无缺。

但是,我有一个身份验证服务依赖项,应该为 WebApi 注入一个不同的 MVC 实现。由于 StructureMap 具有相同的初始化引导代码,如何根据传入的请求是 WebApi 端点还是 Mvc 控制器端点进行切换?

4

1 回答 1

1

不知道这是否是实现这一目标的最佳方式,但我使用 ObjectFactory.Configure 方法在启动时覆盖初始化注册表,但在 Mvc 的 DependencyResolver.SetResolver 和 WebApi 的 GlobalConfiguration.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>()));
于 2012-05-10T14:37:45.447 回答