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

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

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

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

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

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

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

点赞