Сервис RX не смог создать внутренний компонент
«The constructor being called throws an exception», «Exception has been thrown by the target of an invocation» и «Resolution failed with error: No public constructor is available for type» в логах Directum RX: сервис не смог собрать один из своих компонентов. Обычно это следствие модуля, который не загрузился при старте.
Что это значит
Сервисы RX собирают свои компоненты через контейнер внедрения зависимостей: когда нужен, например, обработчик схем задач, контейнер находит его реализацию и создаёт объект. The constructor being called throws an exception и Exception has been thrown by the target of an invocation это обёртки: при создании объекта что-то упало. Полезная часть ниже по стеку, обычно Resolution failed with error: No public constructor is available for type ...: реализация нужного интерфейса не зарегистрирована.
Чаще всего так бывает, когда модуль с этой реализацией не загрузился при старте сервиса, смотрите Не удалось загрузить модуль. Реже причина в несовпадении версий: часть сервисов обновлена, часть нет.
Как проверить
- Найти в стеке тип, для которого не нашлась реализация (
No public constructor is available for type ...). - Посмотреть журнал этого же сервиса с момента его запуска: нет ли там ошибок загрузки модулей.
- Сверить версии сервисов: все ли работают на одной сборке платформы.
Что сделать
- Если при старте были ошибки загрузки модулей, устранить их причину и перезапустить сервис.
- Если версии сервисов разные, довести обновление до конца.
- Если сервис стартовал чисто, а ошибка повторяется, собрать стек и обратиться к вендору.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать