接上篇文章,Quartz.Net(2)——NetCore3.1整合Quartz.Net ,需要将其部署到IIS服务器上去让后台Job定时运行。引起注意的是:在任务结束后的任务监听器中的邮件并没有发出,这意味着任务实例并没有被成功调度。
经多方查证,可知IIS服务器默认设置会自动回收应用程序池,这意味着将释放内存,清除所有的资源。由于Job实例是由调度器调度运行的,当资源被回收后,调度器关闭后不会再自动打开,因此定时Job无法被调度运行。为了解决这个问题,需要对IIS服务器进行相关的配置。
值得注意的是, I I S 预加载的功能默认是没有安装的,所以为了配置预加载的功能需要先安装这个功能。 \textcolor{red}{值得注意的是,IIS预加载的功能默认是没有安装的,所以为了配置预加载的功能需要先安装这个功能。} 值得注意的是,IIS预加载的功能默认是没有安装的,所以为了配置预加载的功能需要先安装这个功能。
这意味着,当重启后,服务器会自动的请求http://xxxxxx:8002/Start/StartWeb 这个请求。这个方法中,仅仅只向日志中记录了一个start信息。入下:
这个预加载请求逻辑,仅做参考,如果有特殊的处理,可按照实际需求编写业务逻辑
[ApiController] [Route("[controller]/[action]")] public class StartController:ControllerBase { private readonly ILogger logger; public StartController(ILogger logger) { this.logger = logger; } [HttpGet] public void StartWeb() { logger.LogInformation("Start"); } }
步骤3 的操作,同样可以直接设定web.config文件,增加以下信息
IIS服务器经上述设定后,Job实例正常被调度。以上方案仅供参考,如有其它方案,希望和大家一起分享