Navigation and service panel


Content

This text is fallbacked from the German Version. If you need use Google Translate


MIME Types

By Christian Stampfli on 22. January 2014, No comments

Bei vielen Projekten kommen eigene MIME Types zum Einsatz. In den meisten Fällen für Webfonts oder auch für spezifische Mediatypen. Dieser kurze Nice2Know Beitrag soll aufzeigen, wie man mögliche Fehlerquellen auf einfache Weise umgehen kann.

Wird ein eigener MIME Type in der web.config angelegt, sieht dies wie folgt aus:

<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".test2" mimeType="Testing/local"/>
    </staticContent>
  </system.webServer>
</configuration>

 

Der IIS (Internet Information Service) kann jedoch sowohl globale wie auch lokale MIME Types verwalten.
Den Unterschied sieht man in der MIME Types-Konfiguration:

MIME Types im IIS

Der Eintrag für .test1 wurde in der globalen Konfiguration angelegt (Inherited), der Eintrag für .test2 befindet sich in der lokalen Konfiguration (Local). Die globale Konfiguration wird in der applicationHost.config (normalerweise in C:\Windows\System32\inetsrv\config) des IIS gespeichert, die lokale Konfiguration in der jeweiligen web.config.

Wenn in der web.config für den oben erwähnten MIME Type ein Eintrag für ".test1" angelegt wird, dann kann das Web nicht korrekt* gestartet werden, da dieser Eintrag nun doppelt vorhanden ist (global und lokal). Andererseits darf man nicht davon ausgehen, dass der Server den MIME Type ".test1" eingetragen hat (neue Windows Version, IIS Update, etc).

Die Lösung ist simpel. Man löscht den Eintrag um ihn gleich danach wieder einzufügen.
Glücklicherweise ist der IIS so intelligent, dass er trotz der Löschanweisung nicht vorhandene Einträge einfach ignoriert, vorhandene Einträge jedoch tatsächlich löscht. Wird danach der Eintrag "normal" hinzugefügt ist zu 100% sichergestellt, dass der Eintrag nicht doppelt sondern nur einmal vorhanden ist.

In der web.config sieht der Eingangs erwähnte Eintrag mit dem Workaround wie folgt aus:

<configuration>
  <system.webServer>
    <staticContent>
     <remove fileExtension=".test2" />
     <mimeMap fileExtension=".test2" mimeType="Testing/local"/>
    </staticContent>
  </system.webServer>
</configuration>

 

Mit dieser Variante ist sichergestellt, dass der MIME Type für .test2 in jedem Fall funktionieren wird - unabhängig von bereits vorhandenen (globalen) Einträgen für diesen MIME Type.

Hinweis:
Das in diesem Beitrag erwähnte Verhalten basiert auf den Erfahrungen mit dem IIS in den Versionen 6 und 7.

* Im Normalfall wird das Web zwar gestartet, die Seite wird jedoch ohne CSS angezeigt (weil die MIME Type Konfiguration nicht korrekt ist). Will man beispielsweise eine .CSS Datei öffnen, wird die eigentliche Fehlermeldung angezeigt.

Categories  Configuration  Best Practice Tags  web.config  MIME  IIS

No comments

Add your comment

Your email address will not be published. Required fields are marked *

*