目前我有一个 MVC 应用程序,它还包含 WebApi 控制器。
我已经设置了 StructureMap 以使用默认约定进行初始化,该约定处理 MVC 和 WebApi 的服务依赖项。这一切都完美无缺。
但是,我有一个身份验证服务依赖项,应该为 WebApi 注入一个不同的 MVC 实现。由于 StructureMap 具有相同的初始化引导代码,如何根据传入的请求是 WebApi 端点还是 Mvc 控制器端点进行切换?
目前我有一个 MVC 应用程序,它还包含 WebApi 控制器。
我已经设置了 StructureMap 以使用默认约定进行初始化,该约定处理 MVC 和 WebApi 的服务依赖项。这一切都完美无缺。
但是,我有一个身份验证服务依赖项,应该为 WebApi 注入一个不同的 MVC 实现。由于 StructureMap 具有相同的初始化引导代码,如何根据传入的请求是 WebApi 端点还是 Mvc 控制器端点进行切换?
不知道这是否是实现这一目标的最佳方式,但我使用 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>()));