#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. Я сталкиваюсь с той же проблемой. В моем случае он жалуется на пространство имен класса, используемого в полезной нагрузке.