解决.net定时器在iis7上不执行问题


今天第一次在博客园发帖,以前一直在潜水,在这里也是学了不少东西。感谢各位园友

废话不多说,这也是我工作中遇到的问题:

protected void Application_Start(object sender, EventArgs e)
        {
            // 创建一个计时器,单位:毫秒 
            System.Timers.Timer myTimer = new System.Timers.Timer(60*60*1000); //设置时间为5秒,便于测试(单位毫秒)
            myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Enabled = true;
            myTimer.AutoReset = true;
        }
        //计时器方法
        protected void myTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
        {
            //可以设置时间点执行
            if (DateTime.Now.Hour != 1)
            {
                return;
            }
        }

 

在Global.asax文件中创建了定时器,时间设置在晚上一点执行方法,测试的时候将时间改为5秒是正常运行没问题的,正式使用的时候确没见到效果,后来发现是方法根本没有执行

通过网上查找资料发现是iis的进程回收机制导致,当程序闲置时间超过20分钟(iis默认是20分钟),进程将会被回收,这样方法就不会执行了,解决办法暂时有两个,一、iis配置,打开发布在iis上的网站应用池,查看属性,修改闲置超时(一般改为1440)这样就可以了,二、在服务器上挂一个该网站的页面,加一段定时刷新的js(一般20分钟),这样不让网站闲置也可以解决进程回收的问题


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM