应用程序池 startMode="AlwaysRunning" 的替代方案

应用程序池 startMode="AlwaysRunning" 的替代方案

如果 Web 应用程序需要设置其自身,则其应用程序池在 applicationHost.config 中配置为:

<add name="AppPool" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />

每分钟向服务器请求一个页面是否能达到同样的效果?或者将 startMode 设置为该值是否还有其他含义?

答案1

看起来是一样的。看来,由于微软看到开发人员必须这样做,所以他们创建了这个新功能来自动处理这个问题。

然后,[开发人员] 要么设计自定义脚本来向应用程序发送虚假请求,定期“唤醒”应用程序并在客户点击之前执行此代码,要么简单地让访问该应用程序的不幸的第一个客户等待此逻辑完成后再处理请求(这可能会导致他们长时间的延迟)。

ASP.NET 4 附带了一项名为“自动启动”的新功能,可以更好地解决此问题,当 ASP.NET 4 在 IIS 7.5(随 Windows 7 和 Windows Server 2008 R2 一起提供)上运行时,此功能可用。自动启动功能提供了一种受控方法来启动应用程序工作进程、初始化 ASP.NET 应用程序,然后接受 HTTP 请求。

来自 Scott Guthrie 的自动启动 ASP.NET 应用程序(VS 2010 和 .NET 4.0 系列)

因此,除非您不使用 IIS 7.5,否则我建议只使用内置功能。

(谢谢;我不知道这个功能,但我肯定能想到我开发的网站可以使用它。)

答案2

IIS 7.5 在站点或应用程序级别包含一个名为 的附加标志preloadEnabled。将其设置为 true 将创建一个虚假请求来预热站点。它必须与 结合使用autoStart

自动启动

<add name="{yourapppoolname}" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" startMode="AlwaysRunning" />

预加载已启用

<site name="YOURSITENAMEHERE" id="4″>
  <application path="/" applicationPool="YOURAPPPOOL" preloadEnabled="true">
  <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\YOURSITENAME" />
  </application>
</site>

相关内容