Warum IIS? – Folge 14 :“Optimale Fehlermeldungen? – Details und Sprache je nach Besucher.“

Detailliert oder Nüchtern?

Die "404 File not found" Fehlerseite, wer kennt sie nicht. Im Falle des IIS 7 sieht sie für den Besucher so aus:

404 en-us

Meist sieht man die Meldung wenn man sich in der URL vertippt hat oder ein alter Link ins Nirwana zeigt. Allerdings kann das Erscheinen noch andere Gründe haben, welche dem Besucher meist nicht mitgeteilt werden z.B. aus Gründen der Sicherheit.

Der Web Server Administrator dagegen möchte so viele Informationen wie möglich, also z.B. Statuscode + Substatus mit weiteren Details und Vorschlägen zum Beheben eines Problems:

404.8

Anm.: Die folgende Fehlermeldung lässt sich einfach provozieren, indem man eine URL aufruft, die für den IIS eine geschützte (Konfigurations-) Datei darstellt ("web.config") – anstatt den Inhalt der Datei anzuzeigen wird ein Fehler angezeigt.

Der Ort von dem ich die http Anfrage starte entscheidet über die Detailtiefe der Fehlermeldung. Standardmäßig liefert der IIS für nur für die lokal (vom Browser auf der IIS Maschine) gemachten Anfragen so aufschlussreiche Fehlermeldungen wie oben, alle anderen bekommen die einfache 404.

Fehlermeldung - in welcher Sprache eigentlich?

Zugegeben Fehlermeldungen sind lästig aber manchmal unvermeidlich. Da würde es schon helfen, wenn man den leidtragenden Website-Besucher wenigstens in seiner Sprache bedienen würde, oder?

Der IIS ist in der Lage Fehlermeldungen in unterschiedlichen Sprachen auszuliefern. Dazu wird die bevorzugte Sprache des Besuchers über den http Request-Header ermittelt (z.B. Accept-Language: ru-RU), den ein Browser mit der http Anfrage mitschickt. Der IIS berücksichtigt diese Information auch bei der Auswahl der Fehlermeldung. D.h. befinden sich laut Konfigurationseinstellung die Fehlerseiten in (z. B. c:\inetpub\custerr) wird je nach Accept-Language Header der Unter-Ordner bestimmt:

error pages language tag

und dann die entsprechende Fehlerseite z.B. 404.htm zurückgesendet:

404 ru-ru

Vorausgesetzt, man hat eine entsprechende Fehlermeldung-Datei im entsprechenden Pfad auf der Maschine. Am einfachsten geht das indem man das entsprechende Language Pack (Windows Vista, Ultimate) oder Multilingual User Interface Language Packs (Windows Server 2008 (R2)) installiert hat. Dadurch wird z.B. das c:\inetpub\custerr\ru-RU Verzeichnis mit benutzerdefinierten Fehler-Dateien erstellt:

custerr folder

Auf die Systemsprache wird dann zurückgegriffen, wenn das Unter-Verzeichnis " ru-RU" nicht vorhanden wäre.

Hinweis: Im Internet Explorer können Sie den Accept-Language-Header konfigurieren. Gehen Sie auf "Extras" - "Internet-Option", wählen Sie die Registerkarte "Allgemein" und klicken Sie auf "Sprachen".

Anm. : Die Standard Fehler-Dateien lassen sich natürlich auch durch eigene ersetzen.