标签:Web return string NetCore DateTime static var 定时 Today
web网站要定时执行一下指令,通常是专门给它写一个服务,但是建一个小网站,还专门给它写服务,感觉小题大作了,直接写web代码里不好吗?
首先我们写一个配置读取方法,因为我们需要读取网站绑定的域名,当然你要是把网站域名写死在代码里,就不用这个了.
public static class AppSetting { public static IConfigurationRoot configuration; static AppSetting() { configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true) .Build(); } public static string GetConfig(string key) { try { return configuration.GetSection("AppConfig")[key].ToString(); } catch (Exception) { return ""; } } }
然后我们在appsetting.json里写上我们的配置
"AppConfig": { "ServerUrl": "http://www.mysite.com:5000" },
接下来在Startup.cs启动器里,Configure方法的最后写上异步代码
Task.Run(() => { var time = DateTime.Today.AddDays(-1); while (true) { string url = AppSetting.GetConfig("ServerUrl") + "/Index/Space";//本站的一个空白控制器页面,返回 return Content(""); WebHelper.RequestGetUrl(url);//自己封装的一个get请求方法,请求上面的空白页面,用处是保持心跳,防止进程休眠而导致本方法失效. var now = DateTime.Today; //半夜指定时间执行计划任务 if (DateTime.Now.TimeOfDay > new TimeSpan(0, 0, 0) && DateTime.Now.TimeOfDay < new TimeSpan(0, 30, 0)) { if (now > time) { using (var scoped = Startup.ApplicationServices.CreateScope()) { var db = scoped.ServiceProvider.GetService<DBContext>(); try { //我的计划任务 } catch (Exception e) { //记录错误信息 } } time = DateTime.Today; } } Thread.Sleep(300000);//5分钟执行一次 } });
使用的EntityFrameworkCore
标签:Web,return,string,NetCore,DateTime,static,var,定时,Today 来源: https://www.cnblogs.com/carlows/p/15560106.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。