Application_start函数和IIS7 Process Model空闲超时设置

时间:2012-05-25 02:04:33

标签: asp.net asp.net-mvc asp.net-mvc-3 iis-7 application-pool

我有一个asp.net应用程序,我在应用程序启动功能中调用了一些任务。这些任务运行while(true)并在计算完成后休眠x个时间。但是在部署应用程序之后,我检查了这些任务生成的日志文件,看到它们运行得更多,然后应该运行。

事实上,每当有人在一段时间不活动后访问该网站时,它们就会运行。

我正在查看应用程序池设置,并看到Process Model Idle time out设置为20分钟。

这会导致问题吗?即,应用程序在20分钟后重新启动,从而导致再次调用application_start函数吗?

1 个答案:

答案 0 :(得分:1)

  

这会导致问题吗?

是的,确切地说。此设置意味着如果您的站点上没有活动(没有HTTP请求),IIS将只从内存中卸载应用程序域。然后,下一个请求将启动一个全新的应用程序实例,Application_Start将再次被命中。

请记住,这不是IIS可能卸载您的应用程序的唯一条件。如果例如进程达到CPU或内存使用的某些阈值,也可能发生这种情况。这些也是可配置的。

如果bin文件夹中的某些文件被修改或web.configGlobal.asax也被修改,它也会重新启动。但这次不是IIS将卸载应用程序,而是ASP.NET运行时监听这些文件中的更改。但在所有情况下,都会导致Application_Start在下一次请求时被触发。