我目前在asp.net Web应用程序中遇到两个问题
我有一个计时器,它每3600毫秒(1分钟)调用一次函数,但是如果系统很理想,请说几分钟,然后计时器停止,要再次启动计时器,我必须通过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");
}
}
答案 0 :(得分:0)
进入IIS设置,然后将应用程序池的“空闲超时”更改为其他设置。我认为它默认为15分钟。
IIS > Application Pools > (Right-click) Advanced Settings > Idle time-out (minutes)
详细地说,您的应用程序池正在入睡。您必须增加空闲超时以防止其进入睡眠状态,或者创建一些附加内容,使其在计时器上命中URL,以防止其进入睡眠状态。