将Hangfire与Ninject配置InRequestScope集成的问题

时间:2017-06-13 09:59:15

标签: dependency-injection ninject asp.net-mvc-5 hangfire hangfire.ninject

我正在将Hangfire集成到应用程序(MVC5 4.6)中,以便安排通常每天晚上由管理员用户触发的每日同步任务。

问题是,我似乎无法让Hangfire与我当前的Ninject设置一起玩得很好。它不仅仅运行一个函数,我需要安装Hangfire.Ninject包并在Startup.cs中注册内核。

问题是,我有依赖关系A,它包含依赖关系B,但依赖关系B也包含依赖关系A(循环)。

由于这些是在Ninject内核设置中声明的inRequestScope,这并没有引起任何问题,但是这个特定的项目在整个应用程序中被如此多地使用,尝试去除周期性依赖会非常痛苦,但是出于某种原因,Hangfire不会接受它。

是否有其他方法可以消除周期性依赖?

1 个答案:

答案 0 :(得分:1)

我仍然没有完全避免这个问题,但出于Hangfire目的,我决定注册一个不同的Ninject内核,并可以自定义我需要的内容。

大多数依赖项现在使用.InBackgroundJobScope()而不是.InRequestScope()(来自Hangfire Ninject nuget包),但奇怪的是其他几个(幸运的是我不需要)仍然给我周期性的依赖性问题