.NET定时任务执行管理器开源组件–FluentScheduler,可以在web应用程序里面使用
程序员文章站
2022-08-31 19:50:07
public class MvcApplication : System.Web.HttpApplication
{
///
public class MvcApplication : System.Web.HttpApplication { /// <summary> /// 数据上传服务地址,比如 https://localhost:89/DataToJt_WS.asmx /// </summary> public static readonly string severApiUploadAddress = System.Configuration.ConfigurationManager.AppSettings["SeverApiUploadAddress"]; //启动服务 protected void Application_Start() { RegisterGlobalFilters(GlobalFilters.Filters);//注册过滤器 RegisterRoutes(RouteTable.Routes); //创建任务 try { string timeSet = System.Configuration.ConfigurationManager.AppSettings["RunTime"];//获取配置文件任务执行设置时间 DateTime setRunTime = Convert.ToDateTime(timeSet); Registry task = new Registry(); task.Schedule(() => Run_ServerUpload()).ToRunEvery(1).Days().At(setRunTime.Hour, setRunTime.Minute);//任务每天定时执行 FluentScheduler.JobManager.Initialize(task); //启动服务日志 LogManager.AddLog("700", "启动服务成功", "UplodLog"); LogManager.AddLine("UplodLog", 1); } catch (Exception) { LogManager.AddLog("700", "启动服务失败", "UplodLog"); LogManager.AddLine("UplodLog", 1); } } /// <summary> /// 自动执行上传方法 /// </summary> private void Run_ServerUpload() { string timeSet = System.Configuration.ConfigurationManager.AppSettings["RunTime"]; LogManager.AddLog("300", "设置的执行时间" + timeSet, "UplodLog"); LogManager.AddLog("300", "======开始自动执行上传方法", "UplodLog"); WebApplicationBAOJI.Controllers.HomeController hc = new Controllers.HomeController(); string dateSeach = DB.GetLiJiDate().ToString("yyyy-MM-dd"); hc.Send_Laboratory_Data(dateSeach); hc.Send_Instorage_Check(dateSeach); hc.Send_DumpStorage(); hc.Send_Measure_Train(dateSeach); hc.Send_OrgDumpInfo(dateSeach); hc.Send_Furnace_Rqteamdata(dateSeach); hc.Send_DumpOperationOut(dateSeach); hc.Send_DumpOperationIn(dateSeach); hc.Send_Coalyard_DevicesLog(dateSeach); hc.Send_DumpInfo(); hc.Send_Clrzc(dateSeach); LogManager.AddLine("UplodLog", 1); LogManager.AddLog("300", "自动执行上传完成", "UplodLog"); } protected void Application_End(object sender, EventArgs e) { try { LogManager.AddLog("4", "进程即将被IIS回收", "Application_End"); LogManager.AddLog("4", "重新访问一个页面,以唤醒服务", "Application_End"); string strUrl = System.Configuration.ConfigurationManager.AppSettings["SelfAddress"];//本程序部署地址 System.Net.HttpWebRequest httpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strUrl); System.Net.HttpWebResponse httpWebResponse = (System.Net.HttpWebResponse)httpWebRequest.GetResponse(); System.IO.Stream stream = httpWebResponse.GetResponseStream();//得到回写的字节流 httpWebResponse.Close(); } catch (Exception ex) { LogManager.AddLog("4", "唤醒服务异常:" + ex.Message, "Application_End"); } }
该服务会被IIS回收,所以要在Application_End结束程序时,要自己访问自己,保证不会被iis回收掉,这样才能保证24小时不间断服务,才不会中断,切记