狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Quartz.NET網站定時任務 每周凌晨1點更新無法執行,如何解決?

admin
2021年3月8日 12:26 本文熱度 4100
Global.asax 代碼:
IScheduler sched;
        private void Application_Start(object sender, EventArgs e)
        {
            ISchedulerFactory sf = new StdSchedulerFactory(); 
            IScheduler sched = sf.GetScheduler();
            IJobDetail job = JobBuilder.Create<TimingTask>().WithIdentity("sport_quan_job""sport_quan_group").Build();
            ITrigger trigger = TriggerBuilder.Create().WithIdentity("sport_quan_job""sport_quan_group").WithCronSchedule(PubConfig.CronExpr).Build(); 
            sched.ScheduleJob(job, trigger); 
            sched.Start();
 
            LogHelper.WriteLog("Application_Start""Application_Start");
        }
 
        private void Application_End(object sender, EventArgs e)
        {
            LogHelper.WriteLog("Application_End""Application_End");
            // 在應用程序關閉時運行的代碼 
            if (sched != null) { sched.Shutdown(true); }
        }

TimingTask.cs 實現接口IJob:
        public void Execute(IJobExecutionContext context)
        {
            try
            {
                if (System.DateTime.Now.Hour == 1)
                {
                    DataSet dsArrange = new stadium_arrange().SelectArrangeList();
                    long result = ArrangeHelper.InsertScheduleOfField(dsArrange);
                    if (result > 0)
                    {
                        LogHelper.WriteLog("更新排班""定時更新排班成功!");
                    }
                    else
                    {
                        LogHelper.WriteLog("更新排班""暫無更新!");
                    }
                }
                else
                {
                    LogHelper.WriteLog("定時任務""僅執行定時任務,不作更新排班操作!");
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog("程序異常", ex.Message);
                JobExecutionException e2 = new JobExecutionException(ex);
                // this job will refire immediately
                e2.RefireImmediately = true;
                throw e2;
            }
        }

web.config 配置:
<!--Quartz[0 0 1 * * ?] 配置項 每天凌晨1點更新-->
    <add key="cronExpr" value="0 0 1 * * ?"/>

這兩天執行的日志如下:

2014年9月17日_log.txt

標題: Application_Start
內容: Application_Start
時間: 2014/9/17 19:30:38
---------------------------------------------

標題: Application_Start
內容: Application_Start
時間: 2014/9/17 20:52:03
---------------------------------------------

標題: Application_End
內容: Application_End
時間: 2014/9/17 21:08:02
---------------------------------------------

標題: Application_Start
內容: Application_Start
時間: 2014/9/17 22:02:32
---------------------------------------------

標題: Application_End
內容: Application_End
時間: 2014/9/17 22:23:32
---------------------------------------------

2014年9月18日_log.txt

標題: Application_Start
內容: Application_Start
時間: 2014/9/18 4:25:39
---------------------------------------------

標題: Application_End
內容: Application_End
時間: 2014/9/18 4:38:39
---------------------------------------------

標題: Application_Start
內容: Application_Start
時間: 2014/9/18 9:05:39
---------------------------------------------

問題來了,即沒有執行凌晨一點的定時任務,而且中間還隔了幾個小時未記錄任務日志,求各位大神支招!??!

該文章在 2021/3/8 12:26:21 編輯過

全部評論4

admin
2021年3月8日 12:26
我的Quartz.NET 版本是最新版,貌似沒有JobDetail 和 CronTrigger ,當網站白天在運行時,也確實可以實現,但是一到晚上長時間沒有聯機網站,貌似就不能執行,連日志都沒有,所以應該不是功能的問題吧。。。
admin
2021年3月8日 12:27
因為你的服務停了,就不會記錄了
每次停止后,加喚醒程序,就可以了

該評論在 2021/3/8 12:27:04 編輯過
admin
2021年3月8日 12:28
IIS問題,時間長了沒人訪問會失效,增加個 模擬點擊網站網頁 功能。。在一般處理程序里面寫:

該評論在 2021/3/8 12:28:34 編輯過
admin
2021年3月8日 12:30
  1. 首先不要設置iis自動回收,一般設置凌晨1-2點左右回收一次,當凌晨iis回收應用程序池的時候,會調用Application_End,執行里面的代碼,  
  2. 重新啟動網站,建議定時器的代碼放在Session_Start里面,因為  
  3. Application_Start只有再第一個用戶訪問網站的時候才會觸發該方法,通常會在該方法里定義一些系統變量,如聊天室的在線總人數統計,  
  4. 歷史訪問人數統計的初始化等等均可在這里定義.所以第一次訪問的時候會先進入Application_Start,  
  5. 然后再進入Session_Start。但是以后每次訪問的時候進入的是Session_Start  
  6. 第一個訪問網站的用戶會觸發該方法.     
  7.   
  8. Application_Start()  
  9.     {  
  10.       
  11.   
  12.     }  
  13. //每個用戶訪問網站的第一個頁面時觸發;  
  14.     void Session_Start(object sender, EventArgs e)  
  15.     {  
  16.       LogHelper.WriteInfoLog("觸發Session_Start事件,準備執行定時任務:" + DateTime.Now);  
  17.   
  18.       #region 定時任務  
  19.       System.Threading.Thread myTimer = new System.Threading.Thread(new System.Threading.ThreadStart(Timer_Write));  
  20.       myTimer.Start();  
  21.       #endregion  
  22.   
  23.     }  
  24. //網站關閉,或重啟時,會觸發該方法.  
  25.   
  26.     void Application_End(object sender, EventArgs e)  
  27.     {  
  28.       //下面的代碼是關鍵,可解決IIS應用程序池自動回收的問題  
  29.       System.Threading.Thread.Sleep(1000);  
  30.       //觸發事件, 寫入提示信息  
  31.       LogHelper.WriteInfoLog("觸發Application_End事件,正在重新啟動網站:" + DateTime.Now);  
  32.       //這里設置你的web地址,可以隨便指向你的任意一個頁面甚至不存在的頁面,目的是要激發Session_Start  
  33.   
  34.       //使用您自己的URL  
  35.       string url = "你的網址";  
  36.       System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);  
  37.       System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();  
  38.       System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回寫的字節流  
  39.   
  40.     }  


該評論在 2021/3/8 12:30:03 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved