Første gang man requester en ASP.NET applikation kan der, afhængigt af hvor meget data den skal loade etc., tage en del tid før man rent faktisk får siden frem. Det kan være et problem som ikke er let at komme udenom – før nu.
Med ASP.NET 4.0 og en IIS 7.5 kan du “varme” din applikation op før den rent faktisk bliver kaldt.
For at bruge denne feature skal du slå “application warm up” til i din applicationHost.config fil under system32\inetsrv\config:
<applicationPools>
<add name="MyApplicationPool" startMode="AlwaysRunning" />
</applicationPools>
En application pool kan indeholde mange forskellige applikationer/sites og derfor kan det være du også skal specificere hvilke sites denne feature skal berøres af.
<sites>
<site name="MySite" id="1">
<application path="/"
serviceAutoStartEnabled="true"
serviceAutoStartProvider="PrewarmMyCache" >
<!-- Additional content -->
</application>
</site>
</sites>
<!-- Additional content -->
<serviceAutoStartProviders>
<add name="PrewarmMyCache"
type="MyNamespace.CustomInitialization, MyLibrary" />
</serviceAutoStartProviders>
For hver applikation der er sat op til at starte automatisk, sender IIS’n en et request til den pågældende ASP.NET applikation som fortæller at applikatsom skal starte i en state hvor den ikke kan modtage requests. Du kan oprette en auto-start type med det nødvendige end-point ved at implementere IProcessHostPreloadClient interfacet:
public class CustomInitialization : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
// Perform initialization.
}
}
Når denne metode returner, så er din applikation klar til at modtage requests.
Denne feature kræver IIS 7.5 som i skrivende stund kun findes på en Windows 2008 R2 server.