Hinzufügen von HTTP-Fehlern <error>

Übersicht

Das <error>-Element der <httpErrors>-Sammlung fügt der HTTP-Fehlersammlung eine eindeutige Fehlerzuordnung hinzu.

Kompatibilität

Version Hinweise
IIS 10.0 Das <error>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <error>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <error>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <error>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <error>-Element der <httpErrors>-Sammlung wurde in IIS 7.0 eingeführt.
IIS 6.0 Die <httpErrors>-Sammlung ersetzt den HttpErrors-Abschnitt des IIsWebService-Metabasisobjekts von IIS 6.0.

Setup

Das <error>-Element der <httpErrors>-Sammlung ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Hinzufügen einer benutzerdefinierten Fehlerseite

  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 benutzerdefinierte Fehlerseiten konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start auf Fehlerseiten.
    Screenshot of the Home pane with the Error Pages option being highlighted.

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

  5. Geben Sie im Dialogfeld Benutzerdefinierte Fehlerseite hinzufügen unter Statuscode die Nummer des HTTP-Statuscodes ein, für den Sie eine benutzerdefinierte Fehlermeldung erstellen möchten.
    Screenshot of the Add Custom Error Page dialog box, showing the Status code field.

  6. Führen Sie im Abschnitt Antwortaktion eine der folgenden Aktionen aus:

    • Wählen Sie Inhalt aus statischer Datei in die Fehlerantwort einfügen aus, um statischen Inhalt (z. B. eine HTML-Datei) für den benutzerdefinierten Fehler bereitzustellen.
    • Wählen Sie URL auf dieser Site ausführen aus, um dynamischen Inhalte (z. B. eine ASP-Datei) für den benutzerdefinierten Fehler bereitzustellen.
    • Wählen Sie Mit einer Umleitung vom Typ „302“ reagieren aus, um Clientbrowser zu einer anderen URL umzuleiten, die die benutzerdefinierte Fehlerdatei enthält.
  7. Geben Sie im Textfeld Dateipfad den Pfad der benutzerdefinierten Fehlerseite ein, wenn Sie Inhalt aus statischer Datei in die Fehlerantwort einfügen ausgewählt haben, oder geben Sie die URL der benutzerdefinierten Fehlerseite ein, wenn Sie entweder URL auf dieser Site ausführen oder Mit einer Umleitung vom Typ „302“ reagieren ausgewählt haben, und klicken Sie anschließend auf OK.

    Hinweis

    Bei Verwendung von URL auf dieser Site ausführen muss der Pfad ein relativer Pfad sein. Bei Verwendung von Mit einer Umleitung vom Typ „302“ reagieren muss die URL eine absolute URL sein.

    Hinweis

    Folgende HTTP-Fehler können nicht angepasst werden: 400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503 und 505.

Konfiguration

Attribute

Attribut Beschreibung
path Erforderliches Zeichenfolgenattribut.

Gibt den Dateipfad oder die URL an, der bzw. die als Reaktion auf den HTTP-Fehler bereitgestellt wird, der durch die Attribute statusCode und subStatusCode angegeben wird. Wenn Sie den Antwortmodus „File“ auswählen, geben Sie den Pfad der benutzerdefinierten Fehlerseite an. Wenn Sie den Antwortmodus ExecuteURL auswählen, muss der Pfad eine relative Server-URL sein (z. B. „/404.htm“). Wenn Sie den Antwortmodus Redirect auswählen, müssen Sie eine absolute URL eingeben (z. B. www.contoso.com/404.htm).
prefixLanguageFilePath Optionales Zeichenfolgeattribut.

Gibt das anfängliche Pfadsegment beim Generieren des Pfads für einen benutzerdefinierten Fehler an. Dieses Segment wird vor dem sprachspezifischen Teil des benutzerdefinierten Fehlerpfads angezeigt. Beispiel: Im Pfad „C:\Inetpub\Custerr\en-us\404.htm“ ist „C:\Inetpub\Custerr“ der Wert von prefixLanguageFilePath.
responseMode Optionales enum-Attribut.

Gibt an, wie benutzerdefinierte Fehlerinhalte zurückgegeben werden.

Das responseMode-Attribut kann einen der folgenden Werte haben. Der Standardwert ist File.
Wert Beschreibung
File Stellt statischen Inhalt (z. B. eine HTML-Datei) für den benutzerdefinierten Fehler bereit.

Wenn responseMode auf File festgelegt ist, muss der Wert des Pfadattributs ein Dateipfad sein.

Der numerische Wert ist 0.
ExecuteURL Stellt dynamische Inhalte (z. B. eine ASP-Datei) bereit, die im Pfadattribut für den benutzerdefinierten Fehler festgelegt sind.

Wenn responseMode auf ExecuteURL festgelegt ist, muss der Pfadwert eine relative Server-URL sein.

Der numerische Wert ist 1.
Redirect Leitet Clientbrowser zu einer URL um, die im Pfadattribut angegeben ist und die benutzerdefinierte Fehlerdatei enthält.

Wenn responseMode auf Redirect festgelegt ist, muss der Pfadwert eine absolute URL sein.

Der numerische Wert ist 2.
statusCode Erforderliches uint-Attribut.

Gibt die Nummer des HTTP-Statuscodes an, für den Sie eine benutzerdefinierte Fehlermeldung erstellen möchten. Zulässig sind Werte zwischen „400“ und „999“ (einschließlich).
subStatusCode Optionales int-Attribut.

Gibt die Nummer des HTTP-Unterstatuscodes an, für den Sie eine benutzerdefinierte Fehlermeldung erstellen möchten. Zulässig sind Werte zwischen „-1“ und „999“ (einschließlich).

Der Standardwert ist -1.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Wenn das folgende Konfigurationsbeispiel in die Datei „Web.config“ für eine Website oder Anwendung eingeschlossen wird, wird das errorMode-Attribut verwendet, um die Anzeige ausführlicher Fehlermeldungen nur auf dem lokalen Computer zuzulassen. Außerdem wird das defaultResponseMode-Attribut verwendet, um den Antwortmodus für die Site oder Anwendung festzulegen. Anschließend wird in dem Beispiel die geerbte Fehlermeldung für den Statuscode 500 entfernt. Danach wird das prefixLanguageFilePath-Attribut auf das Verzeichnis festgelegt, in dem IIS nach einer neuen benutzerdefinierten Fehlerseite suchen soll, und das path-Attribut wird auf „500.htm“ (die Datei, die die benutzerdefinierte Fehlermeldung enthält) festgelegt.

<configuration>
   <system.webServer>
      <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" >
         <remove statusCode="500" />
         <error statusCode="500"
            prefixLanguageFilePath="C:\Contoso\Content\errors"
            path="500.htm" />
       </httpErrors>
   </system.webServer>
</configuration>

Beispielcode

In den folgenden Beispielen wird eine neue Datei für alle Fehler mit dem Statuscode 404 und dem Unterstatus 5 hinzugefügt, den IIS für Fehler vom Typ „Abgelehnte URL-Sequenz“ zurückgibt. In diesen Beispielen wird der Präfixpfad auf „%SystemDrive%\inetpub\custerr“ festgelegt, und als Dateiname wird „404.5.htm“ angegeben.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpErrors /+"[statusCode='404',subStatusCode='5',prefixLanguageFilePath='%SystemDrive%\inetpub\custerr',path='404.5.htm']" /commit:apphost

Hinweis

Legen Sie den commit-Parameter auf apphost fest, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei „ApplicationHost.config“ festgelegt.

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.GetApplicationHostConfiguration();
         ConfigurationSection httpErrorsSection = config.GetSection("system.webServer/httpErrors");
         ConfigurationElementCollection httpErrorsCollection = httpErrorsSection.GetCollection();

         ConfigurationElement errorElement = httpErrorsCollection.CreateElement("error");
         errorElement["statusCode"] = 404;
         errorElement["subStatusCode"] = 5;
         errorElement["prefixLanguageFilePath"] = @"%SystemDrive%\inetpub\custerr";
         errorElement["path"] = @"404.5.htm";
         httpErrorsCollection.Add(errorElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

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

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpErrorsSection As ConfigurationSection = config.GetSection("system.webServer/httpErrors")
      Dim httpErrorsCollection As ConfigurationElementCollection = httpErrorsSection.GetCollection

      Dim errorElement As ConfigurationElement = httpErrorsCollection.CreateElement("error")
      errorElement("statusCode") = 404
      errorElement("subStatusCode") = 5
      errorElement("prefixLanguageFilePath") = "%SystemDrive%\inetpub\custerr"
      errorElement("path") = "404.5.htm"
      httpErrorsCollection.Add(errorElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpErrorsSection = adminManager.GetAdminSection("system.webServer/httpErrors", "MACHINE/WEBROOT/APPHOST");
var httpErrorsCollection = httpErrorsSection.Collection;

var errorElement = httpErrorsCollection.CreateNewElement("error");
errorElement.Properties.Item("statusCode").Value = 404;
errorElement.Properties.Item("subStatusCode").Value = 5;
errorElement.Properties.Item("prefixLanguageFilePath").Value = "%SystemDrive%\\inetpub\\custerr";
errorElement.Properties.Item("path").Value = "404.5.htm";
httpErrorsCollection.AddElement(errorElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpErrorsSection = adminManager.GetAdminSection("system.webServer/httpErrors", "MACHINE/WEBROOT/APPHOST")
Set httpErrorsCollection = httpErrorsSection.Collection

Set errorElement = httpErrorsCollection.CreateNewElement("error")
errorElement.Properties.Item("statusCode").Value = 404
errorElement.Properties.Item("subStatusCode").Value = 5
errorElement.Properties.Item("prefixLanguageFilePath").Value = "%SystemDrive%\inetpub\custerr"
errorElement.Properties.Item("path").Value = "404.5.htm"
httpErrorsCollection.AddElement errorElement

adminManager.CommitChanges()