Autofac пытается загрузить не относящийся к делу класс

#c# #autofac #nopcommerce

Вопрос:

Я обновил nopCommerce с версии 4.30 до новейшей версии 4.40.3. У меня было три плагина, которые хорошо работали в версии 4.30, но не работают в новейшей версии. Я уже обновил весь соответствующий код, который изменился с обновлением последней версии, и все компилируется без каких-либо проблем.

Но когда я пытаюсь установить один из этих плагинов в новой версии, я получаю следующее сообщение об ошибке:

Autofac.Core.Активаторы.Отражение.Исключение NoConstructorsFoundException: «Для системы типа не найдено доступных конструкторов».Директорские услуги.Активированная память.Контроллер домена’.’

в Autofac.Core.Активаторы.Отражение.DefaultConstructorFinder.GetDefaultPublicConstructors(Тип типа) в Autofac.Core.Активаторы.Отражение.DefaultConstructorFinder.Найдите конструкторы(Тип TargetType) в Autofac.Core.Активаторы.Отражение.Активатор отражения.Сконфигурируйте Pipeline(IComponentRegistryServices, службы компонентрегистрации, конвейерная сборка IResolvePipelineBuilder) в Autofac.Core.Registration.Регистрация компонентов.BuildResolvePipeline(IComponentRegistryServices, регистрационные службы, конвейерная сборка IResolvePipelineBuilder) на Autofac.Ядро.Регистрация.Регистрация компонентов.BuildResolvePipeline(IComponentRegistryServices услуги регистрации) в Autofac.Core.Регистрация.Конструктор компонентов.Сборка() в Autofac.Сборщик контейнеров.Сборка(параметры сборки контейнеров) в Autofac.Extensions.Зависимость от инъекции.AutofacServiceProviderFactory.CreateServiceProvider(конструктор контейнеров) в Microsoft.Расширения.Принимающий.Внутренний.ServiceFactoryAdapter`1.Создайте ServiceProvider(контейнер объектов) в Microsoft.Расширения.Принимающий.Хостбилдер.CreateServiceProvider() в Microsoft.Расширения.Принимающий.Хостбилдер.Сборка() в Nop.Web.Program.d__0.MoveNext() в C:GitWebentwicklungNopCommercePresentationNop.WebProgram.cs:строка 16

Класс DomainController исходит из Системы.Пакет DirectoryServices, поэтому я не могу напрямую что-либо изменить в этом конкретном классе. Эта библиотека dll загружается, потому что один из моих плагинов содержит ссылку на библиотеку dll, в которой установлен этот пакет.

Плагин может быть установлен без каких-либо проблем и с той же конфигурацией, что и в предыдущей версии, в которой также использовался Autofac.

Внутри nopCommerce мне не нужны никакие функции, которые предоставляет этот пакет.

Итак, мой вопрос заключается в следующем: можно ли как-то сказать Autofac, чтобы он просто игнорировал эту сборку или этот конкретный класс?

Любая помощь будет признательна.

Комментарии:

1. Предположительно, одна из ваших служб, которую вы зарегистрировали в Autofac, использует DomainController свой конструктор. Полное сообщение об ошибке должно сообщить вам, какая служба.

2. @Llama проблема в том, что это полное сообщение об ошибке, которое я получаю. Если я загляну в стек вызовов, то увижу только внутренние методы Autofac, но не там, где в моем коде возникает ошибка.

3. Можете ли вы скопировать все, включая трассировку стека, в свой вопрос, пожалуйста?

4. @Llama Я добавил трассировку стека исключения

5. Проверьте связанную проблему здесь github.com/autofac/Autofac/issues/1050#issuecomment-557268729