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