1

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

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

问题是,我有包含依赖项 B 的依赖项 A,但依赖项 B 也包含依赖项 A(循环)。

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

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

4

1 回答 1

1

我仍然没有完全避免这个问题,但是出于 Hangfire 的目的,我决定注册一个不同的 Ninject Kernel 并且可以精确地定制我需要的东西。

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

于 2017-06-13T17:03:13.657 回答