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
Ö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).
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.
Doppelklicken Sie im Bereich Start auf Fehlerseiten.
Klicken Sie im Bereich Aktionen auf Hinzufügen....
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.
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.
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 .
|
||||||||
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()