ASP.NET Core MVC计划任务

Was*_*ter 11 scheduled-tasks asp.net-core

我需要在asp.net mvc核心应用程序的每一天都运行一个计划任务.我能做到吗,怎么样?!

日Thnx

Tse*_*eng 9

简短的回答

你不能.

答案很长

您需要第三方库,如Quarz,Hangfire或Azure WebJobs,它们将从ASP.NET Core应用程序的外部或内部触发它.

要知道,虽然如果使用石英硅或迟发型运行它里面的ASP.NET核心应用,它可能会受到流程的生命周期,也就是说,如果你用IIS或Azure的应用服务运行它,那么你有没有控制时,IIS会停止应用程序(由于不活动或其他)或如果它将启动它没有外部请求(IIS可以配置为立即重新启动应用程序,默认是下一个请求).

话虽这么说,当IIS或其他进程关闭应用程序时,您可能会跳过触发器.因此,最好让调度程序在ASP.NET Core进程之外运行(即控制台应用程序,Azure上的后台工作程序或使用Azure Web作业).

  • @OleK:在ASP.NET中调整线程是一个相当糟糕的主意,首先它可以减少可用于请求的线程数(它们与应用程序共享),从而限制性能/可以处理的请求数量更少.其次,ASP.NET应用程序可以随时回收,尤其是在Azure App Service或IIS上运行时.如果依赖注入和某些服务是作用域的,那么也存在问题,那么您需要自己管理这些范围(通常,ASP.NET为每个请求创建1个范围,当您在请求之外运行时,您必须自己管理) (2认同)