解決.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