我在我的 Windows Azure Web 角色上设置了 ASP.NET 自动启动(我在 Windows Server 2012 上使用 ASP.NET 4.5 和 IIS 8)。我基本上遵循了这些指示。
我正在通过 webrole 的 OnStart 方法startMode="AlwaysRunning"
在应用程序池和网站上进行设置。preloadEnabled="true"
我使用远程访问并验证了这两个属性设置是否正确(通过 IIS 管理器,以及检查 applicationHost.config 文件)。
我还将它添加到 web.config 文件中:
<applicationInitialization skipManagedModules="true">
<add initializationPage="/" />
</applicationInitialization>
此页面说启用自动启动时应禁用空闲超时。然而,我可以从我的日志中看到它不是,应用程序池在一些不活动后重新启动。我还可以在事件日志中看到(超过 6 小时多次):
由于不活动,服务应用程序池“cf9d3284-6454-4bbf-8a8e-efd73df4ed83”的进程 ID 为“772”的工作进程已关闭。应用程序池超时配置设置为 20 分钟。需要时将启动一个新的工作进程。
奇怪的是,即使没有对网站的请求,似乎在记录后立即启动了一个新的应用程序池。因此,如果我在一小时内没有收到单个请求,应用程序池将被回收并重新启动 3 次(我从日志中确认了这一点)。我的配置不正确还是我遗漏了什么?