我有一个 asp.net 应用程序,并且在应用程序启动函数中调用了一些任务。这些任务while(true)
在计算完成后运行并休眠 x 时间。然而,在部署应用程序后,我检查了这些任务生成的日志文件,发现它们运行得比它们应该运行的要多。
事实上,每当有人在一段时间不活动后访问该站点时,它们都会运行。
我正在查看应用程序池设置,发现进程模型空闲超时设置为 20 分钟。
这会导致问题吗?即应用程序是否会在 20 分钟后重新启动,从而导致再次调用 application_start 函数?
我有一个 asp.net 应用程序,并且在应用程序启动函数中调用了一些任务。这些任务while(true)
在计算完成后运行并休眠 x 时间。然而,在部署应用程序后,我检查了这些任务生成的日志文件,发现它们运行得比它们应该运行的要多。
事实上,每当有人在一段时间不活动后访问该站点时,它们都会运行。
我正在查看应用程序池设置,发现进程模型空闲超时设置为 20 分钟。
这会导致问题吗?即应用程序是否会在 20 分钟后重新启动,从而导致再次调用 application_start 函数?
这会导致问题吗?
对,就是这样。此设置意味着如果在给定时间内您的站点上没有任何活动(没有 HTTP 请求),IIS 将简单地从内存中卸载应用程序域。然后进入的下一个请求将启动一个新的应用程序实例,Application_Start 将再次被命中。
请记住,这不是 IIS 可能会卸载您的应用程序的唯一条件。例如,如果进程达到特定的 CPU 或内存使用阈值,也会发生这种情况。这些也是可配置的。
bin
如果文件夹中的某些文件被修改或web.config
或Global.asax
也被修改,它也会重新启动。但这一次不是 IIS 将卸载应用程序,而是 ASP.NET 运行时侦听这些文件中的更改。但在所有情况下,它都会导致Application_Start
在下一个请求时被触发。