在ASP.NET Core RC2应用程序中定期运行后台任务

aw1*_*975 9 c# asp.net quartz.net hangfire asp.net-core

我正在研究ASP.NET Core RC2应用程序.此应用程序需要定期调用某些任务,例如发送电子邮件或调用特定的业务逻辑.

我知道有一些第三方库,如Hangfire或Quartz.NET,可以提供开箱即用的调度功能.但是我不认为其中任何一个当前都支持ASP.NET Core RC2.是否有任何其他可用的选项与ASP.NET Core RC2兼容?

如果没有,我想一个可能的选择是在一个单独的Windows服务中使用这些第三方库之一,然后可以定位支持的.NET版本.然后,该服务可以通过其Web API定期向ASP.NET应用程序发出请求,以便调用任务.

但是我不希望有单独的服务,因为它增加了移动部件的数量并使我们的应用程序的部署变得复杂.

Jam*_*mes 10

手动方法:

  • 最好创建一个Service包含长时间运行代码的代码async
  • while使用暂停(也最好async)为服务添加循环
  • 在新线程中使用Task.Run(() => ...或在线程池(或在传统中Thread)中调用服务类的长时间运行方法.
  • 在Startup.cs中创建该类的实例
  • 使用services.AddSingleton(MyServiceInstance);Configure(...的Startup.cs


Cli*_*t B 1

我们使用一个简单的“任务运行程序”应用程序,它采用命令行参数来确定要调用哪个 Web/Windows 服务。然后使用 Windows 任务计划程序调用“任务运行程序”应用程序。因此,服务是什么或使用什么技术编写并不重要。