需求,程序每20秒自动请求接口抓取数据

解决方式:

在程序根目录下的Global.asax.cs下编写

using System.Threading;
using System.Timers;

 
/// <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"); }

 

 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
            {

                写入需要执行的程序
            }
            catch (Exception ex)
            {
                //打log日志
            }
        }

  

posted on 2021-07-30 09:39  我的梦想是开个小店  阅读(319)  评论(0编辑  收藏  举报