我在.net核心应用程序上使用了Hangfire(1.6.17)进行调度和重复工作......它可以正常运行2 3个作业,但是当它同时执行超过2或3个作业时,一些工作失败,一些工作进入重试部分,其中一些获得成功。
Exception
Failed
Can not change the state to ‘Enqueued’: target method was not found.
System.TypeLoadException
Could not load type ‘MyApp.Repository.AsyncScrumRepository.AsyncScrumRepository’ from assembly ‘MyApp.Repository, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’.
System.TypeLoadException: Could not load type ‘MyApp.Repository.AsyncScrumRepository.AsyncScrumRepository’ from assembly ‘MyApp.Repository, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’.
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type, ObjectHandleOnStack keepalive)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at Hangfire.Storage.InvocationData.Deserialize()
当我手动触发失败并通过UI仪表板重试部分作业时,通过1或2触发,所有作业都会成功。我在生产服务器中使用它,并没有想到这种问题,现在我必须手动触发我的生产中的作业。
以下是例外
的屏幕截图我搜索了Git和博客讨论
我已经更新了我的应用程序 - 在每个解决方案项目中都有相同版本的Hangfire,从Hangfire作业调用的每个依赖方法现在都是公共方法,并且具有我的作业的特定队列名称。