我目前在 Web 应用程序 asp.net 面临两个问题
-
我有计时器,它每 3600 毫秒(1 分钟)调用一个函数,但如果系统是理想的,比如几分钟,那么计时器就会停止,t 再次启动计时器,我必须通过 url 访问网站或重新启动服务器。为什么会这样?
-
系统计时器通过秒稳定地增加间隔,因此我无法将时间与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 以使其保持唤醒状态。