计时器在全局文件中的 IIS 服务器上无法正常工作



我目前在 Web 应用程序 asp.net 面临两个问题

  1. 我有计时器,它每 3600 毫秒(1 分钟)调用一个函数,但如果系统是理想的,比如几分钟,那么计时器就会停止,t 再次启动计时器,我必须通过 url 访问网站或重新启动服务器。为什么会这样?

  2. 系统计时器通过秒稳定地增加间隔,因此我无法将时间与Datetime.now方法进行比较

这是我在global.asax文件中编写的简单代码:

void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer Timer = new System.Timers.Timer();
Timer.Interval = 1000 * 60;
Timer.AutoReset = true;
//Timer.Elapsed += new ElapsedEventHandler(Run);
Timer.Enabled = true;
}
void Run(object source, ElapsedEventArgs e)
{
var time = DateTime.Now.Hour;
var min = DateTime.Now.Minute;
InspectionMailer insp = new InspectionMailer();
// this condition gets failed after few minutes due to increase in time interval 
if ((time == 15 && min == 0) || (time == 15 && min == 26) || time == 15 && min == 40)
{
insp.Send("EQT");
}
}

进入 IIS 设置并将应用程序池"空闲超时"更改为其他设置。我认为它默认为 15 分钟。

IIS > Application Pools > (Right-click) Advanced Settings > Idle time-out (minutes)

详细地说,您的应用程序池正在进入睡眠状态。您必须增加空闲超时以防止其休眠,或者创建其他内容以命中计时器上的 URL 以使其保持唤醒状态。

最新更新