项目场景:
在.Net开发中定时任务我一般都是写在Windows服务中跑,但这次项目组要求直接将定时任务写到web项目中。
问题描述
把定时任务的项目部署到IIS后,定时任务总是无缘无故挂掉。
原因分析:
最后发现是IIS应用程序池的回收机制导致了任务挂掉。
解决方案:
网上找了一堆方案:
- 什么在应用程序关闭事件里再请求一次网站从而激活应用程序池;
- 什么自己另外写个程序定时请求网站(这种纯属脱裤子放屁,那为何我不直接用Windows服务);
- 什么修改应用程序池回收时间(无论设置多长时间总会存在任务的空窗期);
以上方法本人亲测都没有效果。
最终解决方案:应用程序池的启动模式设置为AlwaysRunning,站点的预加载已启用设置为True。