需求,程序每20秒自动请求接口抓取数据
解决方式:
在程序根目录下的Global.asax.cs下编写
using System.Threading;
using System.Timers;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <br> /// <summary> /// 启动应用程序 /// </summary> protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); //// 启动的时候清除全部缓存 ////定时器 userIBLL.SaveLog( "应用程序启动" , "Application_Start" ); System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed += new ElapsedEventHandler(getMessages); //aTimer.AutoReset = true; aTimer.Interval = 20000; aTimer.Enabled = true ; aTimer.Start(); userIBLL.SaveLog( "应用程序启动" , "2" ); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | protected void Application_End( object sender, EventArgs e) { userIBLL.SaveLog( "自动回收" , "重新执行" ); //下面的代码是关键,可解决IIS应用程序池自动回收的问题 Thread.Sleep(1000); HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(需要重新启动程序的地址); HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); Stream receiveStream = myHttpWebResponse.GetResponseStream(); //得到回写的字节流 } protected void Application_Error( object sender, EventArgs e) { //重新启动应用程序 var lastError = Server.GetLastError(); } private void getMessages( object source, ElapsedEventArgs e) { try { <strong>写入需要执行的程序</strong> } catch (Exception ex) { //打log日志 } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)