Проблемы интеграции Hangfire с настройкой Ninject InRequestScope
Я интегрирую Hangfire в приложение (MVC5 4.6), чтобы запланировать ежедневную задачу синхронизации, которая обычно запускается администратором каждый вечер.
Проблема в том, что я не могу заставить Hangfire играть хорошо с моей текущей настройкой Ninject. Он не просто запустит саму функцию, и мне нужно было установить пакет Hangfire.Ninject и зарегистрировать ядро в Startup.cs.
Проблема в том, что у меня есть зависимость A, которая содержит зависимость B, но зависимость B также содержит зависимость A (циклическая).
Так как они объявлены inRequestScope в настройке ядра Ninject, это не вызвало каких-либо проблем, но этот конкретный элемент используется так много во всем приложении, что было бы слишком болезненно пытаться удалить циклическую зависимость, но по какой-то причине Hangfire не примет это.
Есть ли альтернативы устранению циклической зависимости?
1 ответ
Я до сих пор не совсем избежал этой проблемы, но для целей Hangfire я решил зарегистрировать другое ядро Ninject и мог точно настроить то, что мне было нужно.
Большинство зависимостей теперь работают с использованием.InBackgroundJobScope(), а не.InRequestScope() (из пакета nuget Hangfire Ninject), но, как ни странно, некоторые другие (которые, к счастью, мне не нужны) все еще вызывают проблему циклических зависимостей.