Не удалось загрузить ‘DynamicProxyGenAssembly2’ с помощью Quartz Autofac DynamicProxy Topshelf

#c# #quartz-scheduler #autofac #castle-dynamicproxy #topshelf

#c# #quartz-планировщик #autofac #замок-dynamicproxy #верхняя полка

Вопрос:

Я в основном пытаюсь перехватить методы в заданиях quartz.

Использование стандартного кода верхней полки, перехват классов при регистрации IoC, AdoJobStore

Перехватчик вызывается для каждого метода в a IJob . У меня есть код, который запускается перед вызовом Scheduler.Start() , который проверяет каждое задание и использует методы получения и методы, и он работает при вызове вручную. Но при запуске планировщика из метода Quartz выдается исключение AdoJobStore.JobStoreSupport.RetrieveJob(...) .

Исключение:
Quartz.JobPersistenceException: Couldn't retrieve job because the BLOB couldn't be deserialized: Could not load file or assembly 'DynamicProxyGenAssembly2' or one of its dependencies. The system cannot find the file specified. ---> System.IO.FileNotFoundException: Could not load file or assembly 'DynamicProxyGenAssembly2' or one of its dependencies. The system cannot find the file specified.

У кого-нибудь была эта проблема или знает какой-то способ ее решения? Очень признателен

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

1. DynamicProxyGenAssembly2 — это сборка, которая динамически генерируется генератором прокси -сервера Castle castleproject.org , я мог бы предположить, что прокси-сборка не может загрузить какую-то другую сборку. Чтобы разобраться в этом, посмотрите на сбои привязки из регистратора слияния msdn.microsoft.com/en-us/library /…

2. Ничего не появляется при регистрации сбоев привязки и не видно при регистрации всех привязок. Я получаю это в своих обычных журналах: c# Pre-bind state information LOG: DisplayName DynamicProxyGenAssembly2 (Partial) WRN: Partial binding information was supplied for an assembly: WRN: Assembly Name: DynamicProxyGenAssembly2 Domain ID: 1 и затем он пытается загрузить его из моей папки debug / bin. Когда я проверяю свою папку bin, нет никаких признаков DynamicProxyGenAssembly2

3. Да, сборка создается в памяти, поэтому вы не увидите ее нигде в файловой системе. На вашем месте я бы загрузил исходный код quartz scheduler и просмотрел его, чтобы получить больше информации о том, что происходит не так. Я серьезно сомневаюсь, что это проблема с прокси-сервером castle, поскольку все используют его для генерации прокси-серверов времени выполнения.

4. Да, похоже, это проблема с quartz. Перехват действительно работает, пока задания не будут запланированы и JobFactory не будет предпринята попытка извлечения (инициализации) заданий.

5. Я сталкиваюсь с той же проблемой. В моем случае он жалуется на пространство имен класса, используемого в полезной нагрузке.