据我所知,只要没有用户会话活动,ASP.NET应用程序就会结束,默认会话超时为20分钟。在那之后,当有新的请求时,它将再次活跃起来。
但是,我的应用程序在Application_Start上执行一个非常慢的缓存加载操作,我不希望这种情况发生多次。
如何将IIS配置为不同的行为?
我了解到IIS 7.5上的应用程序池有一个名为auto-start的属性,另一个叫做idle-time-out。文档说如果我将自动启动设置为true并将idle-time-out设置为零,则应用程序池将在IIS启动时启动,并且永远不会超时。但我不知道它是如何集成到ASP.NET的。这是否意味着Application_Start将在IIS启动时运行,并且在下次IIS重新启动之前不会再次发生?
答案 0 :(得分:2)
我使用uptime robot来确保我的应用程序始终正常运行。这个美丽 系统是它只要求您的网站页面的标题,并每5分钟获取状态代码,如“200-ok”,“404-not found”等。这意味着正常运行时间机器人不会向Google Analytics添加噪音,因为从未请求过该页面。
似乎对我来说就像一个梦想,免费!
答案 1 :(得分:1)
对于您为IIS 7.5描述的设置:
应用程序池可能还有其他原因需要重新启动(例如,它超出内存使用限制)。
但每次重新启动时都会运行Application_Start。而且,对于cource,管理员总是可以回收应用程序池。
因此,如果您的问题是关于IIS重新启动和重新启动应用程序之间的1-1关系,那么答案是否定的。但是在正常使用情况下,没有内存泄漏/可怕的崩溃,它应该大致如此。
答案 2 :(得分:0)
对于IIS7.5 +上的ASP.NET 4.0+应用程序 - 您可以设置自动启动并将启动代码从global.asax中的Application_Start移动到类的Preload方法中。请参阅:http://weblogs.asp.net/scottgu/auto-start-asp-net-applications-vs-2010-and-net-4-0-series
以下是使用IIS8 GUI的示例:http://www.codeproject.com/Articles/795265/IIS-Asp-net-warm-up-Auto-Start-Application