Gerade wenn man den IIS als Service Host einsetzt, ist es ärgerlich, wenn man nach jedem Systemstart die bereitgestellten Dienste oder Anwendungen separat hochfahren oder starten muss. Manch einer benutzt sogar ein Skript, um periodisch eine HTTP-Anfrage an den Server zu senden und damit sicherzustellen, dass die Dienste durchgehend in Betrieb sind und nicht wegen Inaktivität gestoppt werden bzw. durch diese Anfrage wieder gestartet werden.
Hört sich kompliziert an. Gut dass es dafür eine einfache Lösung gibt!
Dabei hilft das Feature Application Initialization des IIS. Seit IIS 8.0 ist es fester Bestandteil des IIS und muss manuell aktiviert werden (Control Panel > Programs > Programs and Features > Turn Windows features on or off). Für den IIS 7.5 gibt es ein frei verfügbares Modul zum Herunterladen, welches dieselbe Funktionalität bietet. In einem Artikel von Microsoft wird das Application Initialization Feature erläutert. Hier werden für einen durchgehenden Betrieb einer Web App (und der darin bereitgestellten Dienste) zwei Anpassungen beschrieben. Zum einen muss die Eigenschaft Preload Enabled auf True gesetzt werden. Im IIS 8 kann man dies bequem über die Benutzeroberfläche machen, hier beispielhaft für die WebApp NetFactory:
Zusätzlich muss der Start Mode des verwendeten Application Pools auf AlwaysRunning gesetzt werden:
Auf dem Bild ist aber auch gleich eine dritte Anpassung zu sehen: Um zu verhindern, dass der Application Pool wegen Inaktivität gestoppt wird, muss man den Idle Time-out auf 0 setzen und damit ausschalten.
Falls die Dienste der Web App nicht gerade manuell gestoppt werden oder der Server heruntergefahren wird, werden nach diesen Änderungen die Web App und Services immer erreichbar sein und automatisch hochfahren – ganz unkompliziert.