当前位置: 首页 > 知识库问答 >
问题:

如何使用结构图将不同的依赖项注入WebApi控制器

席弘图
2023-03-14

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

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

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

共有1个答案

李和昶
2023-03-14

不知道这是否是实现这一点的最佳方法,但我使用ObjectFactory。配置方法以在启动时覆盖初始化注册表,但在Mvc的DependencyResolver上的每个SetResolver中执行此操作。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>()));
 类似资料:
  • 本文向大家介绍webapi中如何使用依赖注入,包括了webapi中如何使用依赖注入的使用技巧和注意事项,需要的朋友参考一下 本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity;由于快过年这段时间打算了解下vue.js,所以后面对webapi的分享文章可能会慢点更新,希望支持

  • 问题内容: 如何在不使用调用的情况下使用Spring将依赖项注入? 问题答案: 由于Servlet 3.0 ServletContext具有“ addListener”方法,因此可以通过如下代码添加而不是在web.xml文件中添加侦听器: 这意味着你可以正常地注入“ MyHttpSessionListener”中,并且,只要你的应用程序上下文中存在bean,就会使侦听器注册到容器中

  • 有没有可能使控制器依赖于他们的服务,而不是通过使用服务容器,而是通过纯粹的构造函数依赖注入? 我希望以这种方式编写控制器: 不幸的是,正如我所看到的,Symfony ControllerResolver不通过ServiceContainer而是通过简单的调用创建新的控制器实例。

  • 我跟随播放2.6的Scala留档和创建非阻塞操作的示例代码,并遇到一些运行时问题。我已经使用Scala模板创建了一个新的Play应用程序()。 播放留档建议应该在新的控制器中工作的代码是(这段代码逐字取自播放留档页面,从我这里有一些额外的导入): 然后,根据使用其他线程池的文档,我定义了

  • 问题内容: 我仍然是Angularjs的新手。我想在控制器中动态注入服务(我创建的)的依赖项。 但是,当我对具有依赖项的服务进行编码时,出现此错误: 错误:未知提供程序:$ windowProvider <-$ window <-base64 这是控制器的代码。 此代码有效: 此代码不起作用: 另一个问题是服务与控制器位于同一模块中。如果模块具有依赖项,则无法使用(我的模块配置中具有$ route

  • 在Symfony中,您可以直接将服务注入控制器函数: 我在寻找什么时候注射什么时候不注射的理由/指南。其中一种或赞成/反对的性能价格是多少,例如: 您必须始终以不使用为目标吗? 如果类中的所有方法都使用,我是否仍然在每个方法中加载它们,还是现在使用? 我如何决定我实现哪种解决方案? 我当前的逻辑是“尽可能多地使用动作注入,因为这样可以节省初始化所有控制器的时间,但缺点是方法调用会稍微慢一些,因为现