【问题标题】:Hangfire jobs not running on my Asp .Net Core-siteHangfire 作业未在我的 Asp .Net Core 站点上运行
【发布时间】:2019-04-15 07:06:35
【问题描述】:

总结以下文字:当我的网页上没有用户时,我必须做什么才能运行 Hangfire 作业?

我正在运行 asp net core 并已开始使用 Hangfire 在我的 Web 应用程序上执行重复任务。周末我让它在我的工作中运行,但是当我回来时,没有运行任何工作。在谷歌搜索了一下之后,我发现它似乎是这个on hangfires docs 的“修复”/方法,但它似乎是为非核心制作的。我是否需要在 .Net Core 中对此进行特殊处理(使用 app.UseHangFireServer() 等等?

【问题讨论】:

  • 我遇到同样的问题已经一个多月了,每周都必须登录服务器。只需查看仪表板就可以让事情再次发生,我无法弄清楚为什么会发生这种情况。你在 IIS 上运行它吗?
  • 感谢您的回复 :) ... 已解决,但我认为可能是我使用了非法的 Cron 表达式。老实说,我真的不记得了:/ ...在一切正常(在 IIS 中)之后,我还是将它移到了控制台应用程序中...

标签: asp.net-core hangfire


【解决方案1】:

问题是hangfire只会在浏览器中按F5刷新您的网站后唤醒。

我的 .NET 核心 Web 服务遇到了同样的问题,我已修复如下。

  • 我们的 IIS 版本:7.5
  • 我们的服务器:Windows Server 2008 R2

1) 您将需要所谓的应用程序初始化程序,您可以在此处下载:https://www.iis.net/downloads/microsoft/application-initialization 下载并运行 MSI。安装后,您可能必须重新启动服务器。

2) 在记事本中打开 %WINDIR%\system32\inetsrv\config 中的 applicationHost.config,确保使用“以管理员身份运行”选项运行它。 请勿使用 Notepad++,请参阅:https://serverfault.com/a/599865

3) 找到配置部分,然后查找运行您的图库的应用程序池。如果您不知道池名称,请在 IIS 管理器中通过右键单击左窗格中的应用程序节点并选择管理应用程序 > 高级设置来查找它。添加 startMode=”AlwaysRunning” 使其看起来像这样:

<add name="OGF.Home.Webapi" autoStart="true" managedRuntimeVersion=""  startMode="AlwaysRunning" >

4) 在 applicationHost.config 中向下滚动一点到配置元素。找到图库应用的条目并添加 preloadEnabled="true" ,如下所示:

   <site name="OGF.Home.Webapi" id="10" serverAutoStart="true">
   <application path="/" applicationPool="OGF.Home.Webapi" preloadEnabled="true">
   ...

5) 通过在以管理员身份运行的命令提示符中执行 iisreset 来重新启动 IIS。

对于 Windows Server 2012 及更高版本,您可以在安装 Application Initializer 后打开应用程序池和网站的“高级设置”菜单,直接在 IIS 中配置这些设置。

【讨论】:

  • 我要补充一点,应用程序池应设置为 NET CLR 版本 v4.0.30319,而不是 .net 核心应用程序的无托管代码。这是我的问题。它位于“使 ASP.NET Core 应用程序始终在 IIS 上运行”docs.hangfire.io/en/latest/deployment-to-production/… 部分中的hangfire 文档页面的一半左右
猜你喜欢
  • 1970-01-01
  • 2021-12-19
  • 2019-05-01
  • 2019-01-17
  • 1970-01-01
  • 2021-02-14
  • 2021-09-26
  • 1970-01-01
  • 2019-10-27
相关资源
最近更新 更多