我已按照以下方式设置了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”或其依赖项之一。系统找不到指定的文件。
我的设置有什么问题?
答案 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' 并看到有问题的条目的序列化与正常工作的条目不同。为什么?我不知道,但我摆脱了拦截的东西,并恢复了一切正常工作。