我在Windows Azure Web角色上设置了ASP.NET自动启动(我在Windows Server 2012上使用ASP.NET 4.5和IIS 8)。我基本上跟着those instructions。
我通过Webrole的OnStart方法在应用程序池上设置startMode="AlwaysRunning"
并在网站上设置preloadEnabled="true"
。
我使用了远程访问并验证了这两个属性是否已正确设置(通过IIS管理器,以及检查applicationHost.config文件)。
我还将其添加到web.config文件中:
<applicationInitialization skipManagedModules="true">
<add initializationPage="/" />
</applicationInitialization>
此page表示启用自动启动时应禁用空闲超时。但是,我可以从我的日志中看到它不是,应用程序池在一些不活动后重新启动。我还可以在事件日志中看到(多次超过6小时):
由于处于非活动状态,服务于应用程序池“cf9d3284-6454-4bbf-8a8e-efd73df4ed83”的进程ID为“772”的工作进程已关闭。应用程序池超时配置设置为20分钟。必要时将启动新的工作进程。
奇怪的是,即使没有对网站的请求,似乎新的应用程序池在记录后立即启动。因此,如果我在一小时内没有收到单个请求,则应用程序池将被回收并重新启动3次(我从日志中确认了这一点)。我的配置不正确还是我错过了什么?
答案 0 :(得分:9)
将启动模式设置为始终单独运行对我来说不起作用,但在应用程序池的“进度”设置中将“空闲超时”设置为0。
答案 1 :(得分:0)
我在这个问题上遇到了很多困难。我竭尽全力让我的服务在IIS中保持活力,但最终累了,不得不采取不同的方法。我创建了一个Windows服务只是为了让这些应用程序池保持活力。您可以尝试的一种方法是转到IIS配置文件,并验证您是否可以看到您所做的配置反映在该配置文件中。 请参阅顶部的链接。但无论何时将其设置为进入睡眠状态,您的配置都将在应用程序池重新启动时重置。你可能需要采取一些方法。