【发布时间】:2016-11-05 13:57:05
【问题描述】:
我想根据 HTTP 标头值注入服务。所以我有 2 个类 - DbDataProvider 和 InMemDataProvider,它们都是从 IDataProvider 实现的。每当进行 API 调用时,客户端都会传递一个标头,以确定是需要 DbDataProvider 还是需要 InMemDataProvider。我该如何做到这一点?所以简而言之,我需要在其中一个中间件的 ServiceCollection 中注入服务。这可能吗?
问题是在 Startup 类的 ConfigureService 方法中我无法获取 HttpContext。我已经编写了一个中间件,我可以使用它来获取 HTTP 上下文,但是如何在那里注入服务?
【问题讨论】:
-
防止基于运行时条件注入服务,就像你应该 not inject runtime data itself 到你的应用程序组件中一样。取而代之的是一个复合组件,它被注入两个实现并在运行时将调用转发给实现。工厂几乎不是正确的解决方案。
标签: c# asp.net-core dependency-injection asp.net-core-middleware