Hangfire作业未在我的Asp .Net Core网站上运行

时间:2019-04-15 07:06:36

标签: asp.net-core hangfire

总结如下:如果网页上没有用户,我该怎么做才能执行Hangfire作业?

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

1 个答案:

答案 0 :(得分:2)

问题在于,只有在通过按浏览器中的F5刷新网站后,hangfire才会唤醒。

我在解决.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,确保使用“以管理员身份运行”选项运行它。 请勿使用记事本++ ,请参见: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中配置这些设置。