Viele Kunden die DSM oder natürlich auch andere Applikationen über eigene Websites/Tools steuern, stehen spätestens immer wieder bei Updates vor der Situation, dass die Funktionen der Websites für den Zeitraum des Updates nicht verfügbar sind.

Hat man beispielsweise ein PSX basiertes Webinterface als Steuerungstool für DSM Funktionen, so wird das Webinterface solange nicht erreichbar sein, solange die Verbindung per PSX zum BLS nicht aufgebaut werden kann. Dies würde nicht nur bedeuten bis das Update abgeschloßen ist, sondern erfordert evtl. auch noch die Aktualisierung zusätzlicher Komponenten oder Module wie PSX und/oder der verwendeten Scripte. Versucht ein Anwender nun während der Downtime auf die Website zuzugreifen, erhält dieser unter Umständen Verbindungsfehler oder andere Meldungen, mit denen er wenig anfangen kann.

Ich möchte in diesem Artikel zwei einfache Möglichkeiten zeigen, wie Sie an Ihrem IIS entweder einer einzelnen Web Applikation oder einer kompletten Site eine "Wartungswebsite" vorschalten können.


Wartungswebsite mit "App_Offline.htm"

Um einzelne Web Applikationen am IIS in den "Wartungsmodus" schalten zu können, gibt es seit IIS 6.0 die einfache Option eine Datei Namens "App_Offline.htm" im Rootverzeichnis der Applikation zu platzieren, die Sie offline schalten möchten.

b2ap3_thumbnail_maintenance1.png

Sobald die Datei angelegt wurde, werden sofort alle Anfragen auf diese Applikation direkt an die "Offline" Seite weitergegeben.

Wissenswert an dieser Stelle ist auch, dass alle durch diese Applikation gesperrten Files, wie z.B. Datenbanken oder andere Ressourcen, freigegeben werden sobald die Applikation offline geht. Hierdurch wird auch der Austausch der Ressourcen möglich, ohne dass ein kompletter Reset des IIS (iisreset) durchgeführt werden muss, der natürlich ebenso andere Applikationen oder Websites auf dem IIS kurzzeitig offline nehmen würde.

Eine weitere Einschränkung betrifft die Größe der "App_Offline.htm", die nicht unter 512 bytes betragen darf. In diesem Fall würde die Datei vom Internet Explorer nicht richtig erkannt werden und als  "File not found" (404) interpretiert werden. Somit würde auch die Standard 404 Error Page angezeigt werden.

 

Wartungswebsite mit Custom Error Page

Bei Verwendung von mehreren Web Applikationen unterhalb einer Site kann die Arbeit mit der "App_Offline.htm" natürlich schnell etwas mehr Aufwand bedeuten, da die Datei vor der Wartung in jede Applikation kopiert werden muss und natürlich auch wieder entfernt oder umbenannt werden muss, sobald alle Wartungsmaßnahmen beendet wurden. Für diesen Fall möchte ich Ihnen noch eine weitere Möglichkeit zeigen, mit der Sie auch gleich eine komplette Site (z.B. Default Web Site) über eine benutzerdefinierte Error Page und die Verwendung der "IP and Domain Restrictions" offline schalten können.

Hierfür nehme ich die bereits vorbereitete App_Offline.htm, benenne diese in einen beliebigen Namen um (in meinem Fall "Wartung.htm") und lege diese im Verzeichnis der Custom Errors ab. (C:\inetpub\custerr\<language>)

b2ap3_thumbnail_maintenance2.png

Alternativ kann diese Seite z.B. auch im Root Verzeichnis der Default Web Site abgelegt werden. (C:\inetpub\wwwroot\)

b2ap3_thumbnail_maintenance3.png

Da die spätere Wartungsseite über die Seitenzugriffe gesteuert werden soll, legen wir uns als nächstes eine benutzerdefinierte Error Page an, die angezeigt werden soll sobald der Zugriff über die "IP and Domain Restrictions" verboten wird. (IIS Error 403.6 - IP Address rejected)

Hierfür klicken wir zunächst auf die Default Web Site und öffnen "Error Pages" im Feature View.

b2ap3_thumbnail_maintenance4.png

Im nächsten Fenster kann über "Add" eine weitere Error Page hinzugefügt werden. Hier wird auch der entsprechende Error Code und die anzuzeigende Website angegeben.

b2ap3_thumbnail_maintenance5.png

Hierbei ist besonders auf den Pfad zu achten. Werden wie im Screenshot absolute Pfade verwendet, sollte in der applicationHost.config überprüft werden ob dies erlaubt ist. Hierfür muss unter httpErrors der Eintrag allowAbsolutePathsWhenDelegated="true" vorhanden sein.

b2ap3_thumbnail_maintenance6.png

Damit die Wartungsseite aus dem IIS Custom Errors Ordner geladen wird, kann ebenfalls ein absoluter Pfad verwendet werden oder auch die bereits für andere Websites angegebene, variable Notation verwendet werden.

b2ap3_thumbnail_maintenance7.png

Um die Wartungsseite nun aktiv zu schalten gehen wir zurück auf die Featureübersicht der Default Web Site und öffnen den Punkt "IP and Domain Restrictions". Sollten Sie dieses Feature in der Übersicht nicht finden, kann es über den Server Manager jederzeit nachinstalliert werden.

b2ap3_thumbnail_maintenance8.png

Hier wird nun zunächst ein Default "Allow" Eintrag angelegt, den wir auf localhost (127.0.0.1) zeigen lassen.

b2ap3_thumbnail_maintenance9.png

Über den Punkt "Edit Feature Settings" legen wir nun das Standardverhalten für alle Clients fest, die nicht angegeben wurden. Da der Standard hier auf "Allow" steht, können alle Anpassungen einmalig vorbereitet werden und bei Bedarf lediglich über die Änderung des Wertes auf "Deny" aktiviert werden.

b2ap3_thumbnail_maintenance10.png

Nach der Wartung wird der Wert wieder auf "Allow" gestellt und alle Clients erreichen die Website wie gewohnt.