应用程序池回收对工作进程和WebEventProvider的影响

时间:2012-01-12 03:08:33

标签: asp.net

我的项目中有一个WebEventProvider以固定的时间间隔执行一些背景操作。 正如我所看到的,当应用程序池被回收并且不会自动重启时,它会停止。根据日志,Application_End事件被调用多次,但不调用Application_Start事件。这是否意味着应用程序池回收后应用程序不会自动重启?回收工作进程是否与WebEventProvider有关?

2 个答案:

答案 0 :(得分:1)

如果要在服务器上运行清理和其他定时事件,则确实需要使用其他机制。 IIS根本不适用于此。

您应该考虑使用控制台应用程序或类似的东西将所有这些事件移动到计划任务。

但是,如果您绝对需要在正在运行的IIS进程中运行它们,则可以设置一个计划任务来运行tinyget.exe,它是IIS resource kit的一部分,以特定间隔请求页面。这将确保您的IIS进程在其他任务需要触发之前正常运行。

答案 1 :(得分:0)

ASP.NET Health Monitoring configuration是ASP.NET设置架构的一部分 - 表明它必须由ASP.NET运行时提供。现在,app-pool实际上是由IIS启动的工作进程,并且app-pool的回收将无法启动ASP.NET应用程序。除非触发ASP.NET应用程序,否则ASP.NET运行时将无法实现。

我相信您需要查看auto-starting your ASP.NET application - 遗憾的是,它是唯一的IIS 7.5功能。另一种方法是设置调度程序以定期ping您的应用程序(发送虚拟请求)。