C# 如何使用StructureMap将不同的依赖项注入WebApi控制器

C# 如何使用StructureMap将不同的依赖项注入WebApi控制器,c#,asp.net-mvc,dependency-injection,structuremap,asp.net-web-api,C#,Asp.net Mvc,Dependency Injection,Structuremap,Asp.net Web Api,目前我有一个MVC应用程序,它也包含WebApi控制器 我已经将StructureMap设置为使用默认约定进行初始化,该约定处理MVC和WebApi的服务依赖关系。这一切都很完美 但是,我有一个身份验证服务依赖项,应该为WebApi注入该依赖项,为MVC注入另一个实现。由于StructureMap具有相同的初始化引导代码,如何根据传入的请求是WebApi终结点还是Mvc控制器终结点进行切换?不知道这是否是实现这一点的最佳方法,但我使用ObjectFactory。配置方法在启动时覆盖初始化注册表,

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

我已经将StructureMap设置为使用默认约定进行初始化,该约定处理MVC和WebApi的服务依赖关系。这一切都很完美


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

不知道这是否是实现这一点的最佳方法,但我使用ObjectFactory。配置方法在启动时覆盖初始化注册表,但在Mvc的DependencyResolver.SetResolver上的每个SetResolver内执行此操作在WebApi的GlobalConfiguration.Configuration.ServiceResolver.SetResolver上

e、 g

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

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