我的假设是,如果我在 Azure 中打开 IIS8 应用程序预热,那么我的所有站点在加载时都会相当即时,但情况并非如此。
所以,基本上,我已经打开preloadEnabled并将 设置startMode为AlwaysRunning,使用:
public class WebRole : RoleEntryPoint
{
public override void Run()
{
using (var serverManager = new ServerManager())
{
foreach (var application in serverManager.Sites.SelectMany(c => c.Applications))
{
application["preloadEnabled"] = true;
}
foreach (var appPool in serverManager.ApplicationPools)
{
appPool["startMode"] = "AlwaysRunning";
}
serverManager.CommitChanges();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还使用以下启动任务禁用了 IIS 应用程序池的回收和定期 IIS 重新启动:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00
Run Code Online (Sandbox Code Playgroud)
在我的每个站点中,我都在 web.config 中添加了以下内容:
<system.webServer>
<applicationInitialization skipManagedModules="true"> …Run Code Online (Sandbox Code Playgroud)