Standarddokument <defaultDocument>

Übersicht

Mithilfe des <defaultDocument>-Elements können Sie das Standarddokumentverhalten für Ihre Website oder Anwendung aktivieren oder deaktivieren. Dieses Element enthält ein untergeordnetes <files>-Element, das eine Sammlung von <add>-Elementen enthält. Jedes <add>-Element definiert die Standarddokumente, die die Site oder Anwendung an einen Clientbrowser zurückgibt, wenn die Site eine Anforderung für das Stammverzeichnis empfängt.

Das <defaultDocument>-Element kann außerdem mindestens ein <remove>-Element enthalten. Jedes <remove>-Element entfernt eine bestimmte Standarddokumentdatei, die von einer Konfigurationsdatei auf höherer Ebene auf dem IIS 7-Server (Internet Information Services, Internetinformationsdienste) geerbt wurde. Sie können auch das <clear>-Element verwenden, um alle Standarddokumenteinstellungen zu entfernen, die höher in der Konfigurationshierarchie definiert sind.

Standarddokumente sind standardmäßig aktiviert, und IIS 7 definiert die folgenden Standarddokumentdateien in der Datei „ApplicationHost.config“ als serverweite Standardwerte:

  • Default.htm
  • Default.asp
  • Index.htm
  • Index.html
  • Iisstart.htm

(Bei der Installation von ASP.NET auf Ihrem Webserver wird dieser Liste auch noch die Datei „Default.aspx“ hinzugefügt.)

Wenn eine Anforderung für das Stammverzeichnis Ihrer Site oder Anwendung eingeht, sendet IIS 7 standardmäßig eine Antwort an den Browser – basierend auf den Dateinamen, die Sie im <defaultDocument>-Element definiert haben. IIS versucht, die korrekten Dateien in der Reihenfolge zurückzugeben, in der sie im <defaultDocument>-Element angezeigt werden. Wenn die Datei „Default.htm“ vorhanden ist, sendet IIS sie an den Clientbrowser. Andernfalls versucht IIS, die Datei „Default.asp“ an den Browser zu senden, und wenn die Datei „Default.asp“ nicht vorhanden ist, versucht IIS, die Datei „Index.htm“ an den Browser zu senden. IIS fährt auf diese Weise fort, bis versucht wird, jede Standarddokumentdatei an den Clientbrowser zu senden.

Hinweis

Durch korrekte Sortierung dieser Liste der Standarddokumente können Sie die Leistung von IIS verbessern. Wenn Sie z. B. „Index.php“ für die Startseite in allen Ordnern Ihrer Website verwenden möchten und „Index.php“ am Ende der Liste der Standarddokumente hinzufügen, muss IIS zuerst die einzelnen Standarddokumente in der Liste durchgehen, bevor versucht wird, „Index.php“ an den Clientbrowser zurückzugeben. Abhängig von der Anzahl von Ordnern Ihrer Website sowie von der Anzahl von Clientbrowseranforderungen kann dies die Leistung beeinträchtigen.

Wenn Sie Standarddokumente deaktivieren, aber die Verzeichnissuche aktiviert haben, gibt IIS eine Verzeichnisauflistung zurück, wenn von einem Browser eine Anforderung für das Stammverzeichnis eingeht. Wenn Sie sowohl Standarddokumente als auch die Verzeichnissuche deaktivieren, sendet IIS einen Fehler vom Typ „HTTP 404: Datei nicht vorhanden“ an den Browser.

Kompatibilität

Version Hinweise
IIS 10.0 Das <defaultDocument>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <defaultDocument>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <defaultDocument>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <defaultDocument>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <defaultDocument>-Element wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <defaultDocument>-Element ersetzt die IIS 6.0-Eigenschaft DefaultDoc und den Wert EnableDefaultDoc der Eigenschaft DirBrowseFlags für das IIsWebService-Metabasisobjekt.

Setup

Das <defaultDocument>-Element ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Hinzufügen eines Standarddokuments für eine Anwendung oder Site

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:

      • Klicken Sie auf der Taskleiste auf Server-Manager > Tools > Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows 8 oder Windows 8.1:

      • Halten Sie die WINDOWS-TASTE gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Vista oder Windows 7:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Sites, und navigieren Sie dann zu der Website oder Anwendung, für die Sie Standarddokumente konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start auf Standarddokument.
    Screenshot of the Home pane with the Default Document option being highlighted.

  4. Klicken Sie im Bereich Aktionen auf Hinzufügen....

  5. Geben Sie im Dialogfeld Standarddokument hinzufügen im Feld Name den Namen des Standarddokuments ein, das Sie hinzufügen möchten, und klicken Sie anschließend auf OK.
    Screenshot of the Add Default Document dialog box.

  6. Wählen Sie bei Bedarf im Bereich Aktionen ein Standarddokument aus der Liste aus, und klicken Sie anschließend auf Nach oben oder Nach unten, um die Reihenfolge zu definieren, in der IIS die Standarddokumentliste durchsuchen soll.

  7. Klicken Sie im Benachrichtigungsfeld Standarddokument auf Ja, um die Konfigurationsvererbung von einer übergeordneten Konfigurationsebene abzulehnen, oder klicken Sie auf Nein oder Abbrechen, um die Änderung der Standarddokumentreihenfolge abzubrechen.
    Screenshot of the Default Document alert box with a focus on the Yes option.

  8. Klicken Sie bei Bedarf im Bereich Aktionen auf Entfernen, um Dateinamen zu entfernen, die nicht als Standarddokumente verwendet werden sollen.

Konfiguration

Sie können die Reihenfolge ändern, in der IIS Standarddokumente verarbeitet, indem Sie die Reihenfolge der <add>-Elemente im <defaultDocument>-Element ändern.

Das <defaultDocument>-Element kann auf der Serverebene in der Datei „ApplicationHost.config“ und auf der Site-, Anwendungs- oder URL-Ebene in der entsprechenden Datei vom Typ „Web.config“ konfiguriert werden.

Attribute

Attribut Beschreibung
enabled Optionales boolesches Attribut.

Gibt an, dass Standarddokumente aktiviert sind.

Der Standardwert ist true.

Untergeordnete Elemente

Element Beschreibung
files Optionales Element.

Gibt eine Liste von Dateinamen an, die als Standarddokumente zurückgegeben werden können.

Konfigurationsbeispiel

Wenn das folgende Konfigurationsbeispiel in die Datei „Web.config“ für eine Site oder Anwendung eingeschlossen wird, werden Standarddokumente für die Site oder Anwendung aktiviert. Anschließend wird der Dateiname „Home.html“ zur Liste der Standarddokumente der Site oder Anwendung hinzugefügt.

<configuration>
   <system.webServer>
      <defaultDocument enabled="true">
         <files>
            <add value="home.html" />
         </files>
      </defaultDocument>
   </system.webServer>
</configuration>

Beispielcode

In den folgenden Beispielen werden Standarddokumente für eine Website namens „Contoso“ aktiviert. Anschließend wird eine Datei mit dem Namen „Home.html“ zur Liste der Standarddokumente für die Site hinzugefügt.

AppCmd.exe

appcmd.exe set config "Contoso" /section:defaultDocument /enabled:true /+files.[value='home.html']

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {
        
        using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Contoso");
            
            ConfigurationSection defaultDocumentSection = config.GetSection("system.webServer/defaultDocument");
            
            defaultDocumentSection["enabled"] = true;
            
            ConfigurationElementCollection filesCollection = defaultDocumentSection.GetCollection("files");
            ConfigurationElement addElement = filesCollection.CreateElement("add");
            addElement["value"] = @"home.html";
            filesCollection.AddAt(0, addElement);
            
            serverManager.CommitChanges();
        }
    }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Class Sample
   Shared Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim defaultDocumentSection As ConfigurationSection = config.GetSection("system.webServer/defaultDocument")

      defaultDocumentSection("enabled") = True

      Dim filesCollection As ConfigurationElementCollection = defaultDocumentSection.GetCollection("files")
      Dim addElement As ConfigurationElement = filesCollection.CreateElement("add")
      addElement("value") = "home.html"
      filesCollection.AddAt(0, addElement)

      serverManager.CommitChanges()
   End Sub
End Class

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";

var defaultDocumentSection = adminManager.GetAdminSection("system.webServer/defaultDocument",
   "MACHINE/WEBROOT/APPHOST/Contoso");

defaultDocumentSection.Properties.Item("enabled").Value = true;

var filesCollection = defaultDocumentSection.ChildElements.Item("files").Collection;

var addElement = filesCollection.CreateNewElement("add");
addElement.Properties.Item("value").Value = "home.html";
filesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"

Set defaultDocumentSection = adminManager.GetAdminSection("system.webServer/defaultDocument", _
   "MACHINE/WEBROOT/APPHOST/Contoso")

defaultDocumentSection.Properties.Item("enabled").Value = True  

Set filesCollection = defaultDocumentSection.ChildElements.Item("files").Collection

Set addElement = filesCollection.CreateNewElement("add")
addElement.Properties.Item("value").Value = "home.html"
filesCollection.AddElement addElement, 0

adminManager.CommitChanges