• Quartz.net 定时任务在IIS中未按时执行


    IIS 垃圾回收机制下解决Quartz.net 的不执行问题

    IIS中涉及了垃圾回收机制,quartz.net 在ASP.NET 项目中可以实现线程监控定时执行任务,但是在IIS7.5机一下版本中涉及到IIS的应用程序池在一段时间后被垃圾回收机制回收,从而导致quartz.net 配置的定时服务无法按时启动。下面来说说如何

    本机装的是IIS7.5,默认的垃圾回收时间间隔为1740分钟(=29h),29小时内访问该网站(此处给了我们曲线救国的方针,让我们有机会瞒过IIS的垃圾回收,以时前文提到的问题得以解决),则,IIS会将后台的Quartz.net 的线程Kill掉,那么在线程中监控的要定时执行的任务也就不会再继续执行了。

    那么既然29小时就Kill掉,那么在29小时内我们再访问一次网站不就可以了,这个就是瞒天过海的策略,当然为了更保险(可能还会有别的因素导致不到29小时就会被回收,如内存啊,重启啊,什么的,不太清楚),现在假设Quartz.net 中我们配置的任务是每天凌晨3点执行(这种后台执行的任务一般都是半夜执行),那么我们在每天3点前2点55或更早左右,使用某种方法重新启动一下网站,那么就不用担心垃圾回收的机制了。当然,重新启动网站会打开一个IE窗口,我们还得记得给关了,要不第二天上班时候被人发现了,还以为你代码里面有鬼呢,呵呵,下面就是方法:

     
    1:  start iexplore.exe http://*.*.*.*:8080/login.aspx
     
    2:  ping -n 10 127.0.0.1>nul
     
    3:  taskkill /f /im iexplore.exe  /t

    将下面三行代码(不带行号)复制到文件中,保存成.bat脚本文件,这个bat脚本文件的意思是:使用IE打开一个地址为:http://*.*.*.*:8080/login.aspx的页面然后10秒后再关闭IE (*.*.*.*使用时应该修改成你的网站发布的IP地址,本地测试的话改成Localhost就可以)127.0.0.1是本机的地址,不用修改,然后再windows的任务管理里面添加一个Windows task (右键我的电脑--管理(Manager)—configuration—task scheduler—Create task )

  • 相关阅读:
    VMware Workstations Pro15.1.0并解锁Unlock3.0.2 安装黑苹果
    正则表达式对字符串匹配
    Linq操作
    C#模糊查询绑定datagridview
    wpf的datepicker处理
    动态调用webservice,不需要添加Web References
    C#调用sap接口及返回数据到sap
    C#中文件管理的运用(Twelfth Day)
    C#中继承,集合(Eleventh day)
    C#中字符串的处理,对象的引用及继承(Tenth day)
  • 原文地址:https://www.cnblogs.com/xjt360/p/4233183.html
Copyright © 2020-2023  润新知