App_Offline.htm und „IE Friendly Error“

Seit ASP 2.0 gibt es ein Feature um eine Webseite in den Wartungsmodus zu bringen. Und zwar die „App_Offline.htm“, die einen super bequemen Weg ermöglicht, eine ASP.NET-Anwendung in den Wartungsmodus zu schalten, während man Änderungen  macht und  wo sichergestellt sein muss, dass kein Benutzer Zugriff auf die Anwendung hat, bis alle Arbeiten erledigt sind.

Die app_offline.htm funktioniert auf eine ganz einfache Art und Weise. Die Datei wird in den Root der Anwendung gelegt und wenn der Interpreter die Datei sieht, führt er einen shut-down der Anwendung durch. Es wird jedoch kein Neustart gemacht du die Anwendung steht weiterhin für Anfragen zur Verfügung. Stattdessen wird der Inhalt der app_offline.htm an den requester gesendet. Wenn die Arbeiten an der Website beendet sind, kann man die Datei einfach löschen oder umbenennen und die Anwendung ist wieder online.

Auf eine Sache sei jedoch hingewiesen, die man im Auge zu behalten sollte: Ein Feature vom IE ab Version 5 sind die sogenannten  „Show Friendly Http Errors“. Dies kann unter Extras-> Internetoptionen-> Registerkarte „Erweitert“ im IE konfiguriert werden und ist standardmäßig aktiviert. Wenn diese Option im Browser aktiviert ist, und ein Server gibt eine Seite mit weniger als Inhalt als 512 Byte zurück, dann wird im Browser nur die generische Fehlerseite angezeigt und nicht unsere Wartungsseite. Was daran jetzt freundlich sein soll verstehe ich nicht, aber sei’s drum.

Wir müssen also sicherstellen, dass der Inhalt unserer Wartungsseite mehr Inhalt als 512 Byte hat. Das geht zum Beispiel so:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> Wartungsarbeiten </ title>
</ Head>

<body>

<h1> Wir führen zur Zeit Wartungsarbeiten durch und bitten um Ihr Verständnis…</ h1>
<h2> Bitte versuchen Sie es später erneut</ h2>

<!- –

Jetzt zusätzlichen Inhalt versteckt hinzufügen, so dass der IE Friendly Error verhindert wird

<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
<h2> Ich bin ein sinnloser Kommentar …</ h2>
–>
</ Body>
</ Html>

Ja – es sieht ein wenig seltsam aus, aber es funktioniert. :-)