【问题标题】:Hangfire failes to load assemblyHangfire 无法加载程序集
【发布时间】:2016-02-05 08:08:46
【问题描述】:

上下文

我有两个应用程序,一个是我的主要企业应用程序,另一个是我托管的 hangfire(hangfire 服务器、客户端和仪表板)。我的主应用程序也使用 hangfire 来完成一些长任务并异步执行它们。两者都使用相同的数据库进行 HF 存储。而且只有一台 HF 服务器。

问题

我间歇性地收到以下错误 -

“无法将状态更改为‘处理中’:未找到目标方法。” 或

“无法将状态更改为‘入队’:找不到目标方法。”

有以下细节-

System.IO.FileNotFoundException

无法加载文件或程序集“MyApp.Hangfire,版本=1.0.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。这 系统找不到指定的文件。

MyApp.Hangfire 是我的hangfire 应用程序执行作业。而且我确信它就在那里,甚至一些成功的工作也证实了这一点。

详情请查看附件截图。

观察

问题并不一致,作业并不总是失败,有时它会失败,重新排队并通过,有时当它重试失败时甚至会失败。 如截图所示

【问题讨论】:

  • 你使用的是什么版本的 Hangfire?
  • @TomRedfern:我使用的是最新版本的 HF,即 1.5.3
  • 如果你重新排队作业,它总是失败?
  • @TomRedfern:并非总是如此,有时它会通过,有时甚至会失败。我也重新检查过,只有 HF 服务器,没有其他应用程序使用相同的 HF DB。甚至没有 IIS 重置。 :(
  • @reggieboyYEAH - 就我而言,HF 数据库已损坏,所以我刚刚为 HF 创建了一个新的空数据库,并使用新名称,它可以正常工作。

标签: c# hangfire


【解决方案1】:

几天前我偶然发现了同样的问题,并决定在此处添加它。
解决方案:在仪表板网络应用程序中添加了对“MyApp.Hangfire”的引用。

上下文与您的非常相似或相同:
-Hangfire 服务器作为 Windows 服务运行;
-在 ASP.NET MVC 5 应用程序之上运行的 Hangfire 仪表板;
- 作业实际上正在运行,但仪表板一直显示 FileNotFoundException;

@reggieboyYEAH 报告并解决了同样的问题。
详情在这里:https://github.com/HangfireIO/Hangfire/issues/558

【讨论】:

  • 您描述的问题与OP的问题不同。但只与需要参考的仪表板有关,以便正确显示作业详细信息。这些作业实际上执行得很好。在 OP 的情况下(和我的情况下),仪表板和作业服务器都已经具有所需的引用,但是作业完全间歇性地失败并重试。这些工作有时会成功,有时会失败
  • @dannie.f:抱歉,我帮不上忙。你发现它是什么了吗?
  • @razercool 我浏览了hangfire github页面,发现了几个与所描述问题相关的问题。例如,请参阅 #908#910。我将添加一个解决方法的答案,以防它帮助其他人
  • @razercool OP 表示他的问题是由于数据库损坏所致。在 github 问题中描述的“找不到文件”异常的间歇性故障的观察实际上源于hangfire 限制。我打算添加一个答案,但它不会解决 OP 的具体问题。但如果它对其他人有用,如果使用多个服务器和一个数据库,则可以通过确保所有服务器引用所有作业类(即使是它无法执行的作业类)来修复错误。 IE。服务器 A 也必须引用服务器 B 的作业,反之亦然。
  • @dannie.f:谢谢!一切都说得通。
猜你喜欢
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 2016-07-05
  • 2016-04-09
  • 2018-05-27
  • 1970-01-01
相关资源
最近更新 更多