【问题标题】:IIS 6.1 - Always running web site with Hangfire for background jobsIIS 6.1 - 始终使用 Hangfire 运行网站以进行后台作业
【发布时间】:2018-04-17 15:59:37
【问题描述】:

我想在 IIS 6.1 上创建一个 ASP.NET 网站(无法更改),它不会回收也不会关闭。我希望它一直在运行,甚至一秒钟都不会停机。

是否有任何内置功能可以帮助我实现这一目标?

(我无法创建 Windows 服务。我需要一个网站。)

解决方法和不太可取的解决方案是创建一个常规网站并创建一个 Windows 计划任务,该任务以固定间隔调用该网站中的函数,因此它永远不会回收。

您知道 IIS 7.* 或 IIS 8 是否支持这样的功能?

** 编辑

它将是一个为后台任务运行 Hangfire 的网站。 当然,Windows 服务 + Hangfire 解决方案更好,但由于时间不够,而且为了让我们的开发人员保持简单,我们更容易维护一个运行后台作业的网站。

【问题讨论】:

  • 在 IIS 管理器中查看 AppPool 的高级设置。您可以在那里配置回收和空闲超时设置。
  • 回收通常是重叠的,所以服务总是在运行,它可能只是在不同的进程中。需要自定义此行为的理由是什么?
  • 您可以创建一个计划任务,该任务调用一个启动维护的 url。
  • 您可以将 Hangfire 视为“更简单”、“更好”和“更受欢迎”,但恕我直言,这只是噩梦的开始。这完全违背了 IIS/ASP.NET 的设计。慢慢来。
  • “我无法创建 Windows 服务。”但这只是你应该走的路。

标签: asp.net iis iis-7 iis-6 hangfire


【解决方案1】:

在应用程序池下将 idleTimeout 设置为 0。这将禁用空闲超时回收。

【讨论】:

    【解决方案2】:

    根据框架、框架版本等,可能需要考虑不同的配置。

    最好的方法是检查评估这个确切问题的official docs。 例如,如果您构建一个 .NET Core 应用程序,保持应用程序处于活动状态的步骤如下:

    • 托管管道模式:Integrated
    • 将启动模式设置为“始终运行”。
    • 将空闲超时(分钟)设置为 0。
    • 设置Preload Enabled = True
    • 转到应用程序的配置编辑器,然后导航到system.webServer/applicationInitialization。设置以下设置:

    doAppInitAfterRestart: True 打开集合…省略号。在下一个窗口中,单击添加并输入以下内容:

    • hostName: {Hangfire 应用程序的 URL 主机}
    • initializationPage:{Hangfire 仪表板的路径,例如 /hangfire}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      相关资源
      最近更新 更多