hangfire无法加载文件或程序集'DynamicProxyGenAssembly2

时间:2016-06-25 05:43:41

标签: c# hangfire

我已按照以下方式设置了Hangfire:

 var t = IocManager.Resolve<TestJob>();

 RecurringJob.AddOrUpdate("sendDailyEmail",() => t.sendEmail(), Cron.Daily);

当我访问Hangfire仪表板时,我可以看到重复作业1,但作业未执行,我收到此错误:

  

无法加载文件或程序集“DynamicProxyGenAssembly2,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。系统找不到指定的文件。

我的设置有什么问题?

2 个答案:

答案 0 :(得分:1)

可能与你的背景不同,但我认为它仍然值得在这里添加:
-Hangfire服务器作为Windows服务运行;
-Hangfire仪表板在ASP.NET MVC 5应用程序之上运行;
-jobs实际上正在运行,但仪表板一直显示FileNotFoundException;

解决方案:在信息中心网页应用中添加了对缺少的程序集的引用(即:&#39; DynamicProxyGenAssembly2&#39;)。

@reggieboyYEAH以同样的方式报告并解决了同样的问题。
详情请见https://github.com/HangfireIO/Hangfire/issues/558

答案 1 :(得分:0)

就我而言,我使用 Autofac 作为 DI 容器,并且在我入队/添加或更新的方法的注册中,我包含了“.EnableInterfaceInterceptors()”以在我从 Hangfire 短暂切换到托管服务时启用拦截,例如

builder.RegisterType<ExPartInvoiceBatchService>().As<IExPartInvoiceBatchService>().InstancePerDependency().EnableInterfaceInterceptors();

无论如何,当我切换回来时,这些进程开始抛出这些错误。如果您使用 SQL 进行序列化,您可以查看 Hangfire.Hash 表行,其中 Field = 'Job' 并看到有问题的条目的序列化与正常工作的条目不同。为什么?我不知道,但我摆脱了拦截的东西,并恢复了一切正常工作。