我有一些控制器需要 Web 服务连接(MS Dynamics CRM 的一个实例CrmService
),我希望控制器通过它们的构造函数接收它。必须使用基于当前登录用户身份的令牌设置 CRM 服务(当用户登录应用程序对 CRM 进行身份验证并可以将返回的令牌存储在 Session 中时)。
我不确定如何最好地使用依赖注入和 Ninject 来提供这个实例。ToMethod()
Ninject Func<> 访问 FormsAuth/Session 以获取当前请求(如果经过身份验证则获取令牌)以创建适当的实例似乎有点垃圾。我也不确定如果用户未通过身份验证会发生什么 - 我不需要这些用户能够访问控制器,但控制器将在[Authorize]
运行任何过滤器之前实例化,因此必须始终满足依赖关系. 从我读过的内容来看,返回 null 并不理想,无论如何我都必须更改 Ninject 配置才能做到这一点。
我在想也许控制器可以获得一个实例ICrmServiceFactory
或其他东西,但如果控制器最终具有其他也直接依赖的依赖项CrmService
(并且不想被传递给工厂),这对我没有帮助。
任何有关如何解决此问题的建议将不胜感激。