为什么Application_Start会在Global.asax中多次触发?

时间:2010-02-21 19:25:21

标签: asp.net silverlight

我在ASP.NET页面中托管了一个Silverlight应用程序。我需要在应用程序首次启动时进行一些处理并启动一些后台进程(各种定期检查)。

我认为Global.asax Application_Start事件是一个很好的地方,但我发现Application_Start多次触发,我没想到。从我读过的内容看来,当最后一个用户退出我的应用程序时,他们的会话就会消失,IIS会卸载我的应用程序。当它下次请求它再次加载并且Application_Start再次运行时,这不是我想要的。

这是预期的行为吗?有没有办法保持应用程序加载,而不是像这样重启?

其次,我有这些我想要运行的定期后台进程。也许Windows服务对他们来说会更好,但在我的应用程序中从静态类中运行计时器很方便。即使没有活跃的用户,有没有办法保持这些运行?

1 个答案:

答案 0 :(得分:2)

我认为您正在尝试实现一种不太适合Web服务器模型的行为。许多CMS尝试通过让一些用户Web请求启动工作来执行定期任务等,但我从未见过它取得了很大的成功。

如果您不受部署问题,访问权限等的限制,我建议您使用Windows服务方法。只需确保将其合并到您的构建/部署过程中,这样就不会成为一个阵容。