Проблемы интеграции 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), но, как ни странно, некоторые другие (которые, к счастью, мне не нужны) все еще вызывают проблему циклических зависимостей.

Другие вопросы по тегам