你的位置:首页 > ASP.net教程

[ASP.net教程]解决.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分钟),这样不让网站闲置也可以解决进程回收的问题