需求,程序每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日志
}
}