Ajouts des erreurs HTTP <erreur>

Vue d’ensemble

L’élément <error> de la collection <httpErrors> ajoute un mappage erreur unique à la collection d’erreurs HTTP.

Compatibilité

Version Notes
IIS 10.0 L’élément <error> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <error> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <error> n’a pas été modifié dans IIS 8.0.
IIS 7.5 L’élément <error> n’a pas été modifié dans IIS 7.5.
IIS 7.0 L’élément <error> de la collection <httpErrors> a été introduit dans IIS 7.0.
IIS 6.0 La collection <httpErrors> remplace la section HttpErrors IIS 6.0 de l’objet de métabase IIsWebService.

Programme d’installation

L’élément <error> de la collection <httpErrors> est inclus dans l’installation par défaut IIS 7.

Procédure

Comment ajouter une page d’erreur personnalisée

  1. Ouvrez le Gestionnaire des services Internet (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Cliquez sur Démarrer, placez le curseur sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, développez le nom du serveur, développez Sites, puis accédez au site Web ou à l’application pour lesquels vous souhaitez configurer des pages d’erreur customisées.

  3. Dans la page Accueil, double-cliquez sur Pages d’erreur.
    Screenshot of the Home pane with the Error Pages option being highlighted.

  4. Dans le volet Actions, cliquer sur Ajouter...

  5. Dans la boîte de dialogue Ajouter une page d’erreur personnalisée, sous Code d’état, tapez le numéro du code d’état HTTP pour lequel vous souhaitez créer un message d’erreur personnalisé.
    Screenshot of the Add Custom Error Page dialog box, showing the Status code field.

  6. Dans la section Action de réponse, effectuez l’une des opérations suivantes :

    • Sélectionnez Insérer du contenu à partir d’un fichier statique dans la réponse d’erreur pour servir du contenu statique, par exemple, un fichier .html, pour l’erreur personnalisée.
    • Sélectionnez Exécuter une URL sur ce site pour servir du contenu dynamique, par exemple, un fichier .asp pour l’erreur personnalisée.
    • Sélectionnez Répondre avec une redirection 302 pour rediriger les navigateurs clients vers une autre URL qui contient le fichier d’erreur personnalisé.
  7. Dans la zone de texte Chemin d’accès au fichier, tapez le chemin d’accès de la page d’erreur personnalisée si vous avez choisi Insérer du contenu à partir d’un fichier statique dans la réponse d’erreur ou l’URL de la page d’erreur personnalisée si vous utilisez Exécuter une URL sur ce site ou Répondre avec une redirection 302, puis cliquez sur OK.

    Remarque

    Si vous sélectionnez Exécuter une URL sur ce site, le chemin d’accès doit être un chemin d’accès relatif. Si vous sélectionnez Répondre avec une redirection 302, l’URL doit être une URL absolue.

    Remarque

    Les erreurs HTTP suivantes ne peuvent pas être personnalisées : 400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503 et 505.

Configuration

Attributs

Attribut Description
path Attribut de chaîne requis.

Spécifie le chemin d'accès au fichier ou à l’URL qui est servi en réponse à l’erreur HTTP spécifiée par les attributs statusCode et subStatusCode. Si vous choisissez le mode réponse fichier, vous spécifiez le chemin d’accès de la page d’erreur personnalisée. Si vous choisissez le mode de réponse ExecuteURL, le chemin d’accès doit être une URL relative de serveur (par exemple, /404.htm). Si vous choisissez le mode de réponse Redirect, vous devez entrer une URL absolue (par exemple, www.contoso.com/404.htm).
prefixLanguageFilePath Attribut de chaîne facultatif.

Spécifie le segment de ligne initial lors de la génération du chemin d’accès pour une erreur personnalisée. Ce segment s’affiche avant les portions spécifiques à la langue du chemin d'accès à l’erreur personnalisée. Par exemple, dans le chemin C:\Inetpub\Custerr\en-us\404.htm, C:\Inetpub\Custerr est le préfixe prefixLanguageFilePath.
responseMode Attribut d’énumération facultatif.

Spécifie la façon dont le contenu d’erreur personnalisé est retourné.

L’attribut responseMode peut être l’une des valeurs possibles suivantes. Par défaut, il s’agit de File.
Valeur Description
File Sert du contenu statique, par exemple, un fichier .html pour l’erreur personnalisée.

Si responseMode est défini sur File, la valeur de l’attribut du chemin d’accès doit être un chemin d’accès de fichier.

La valeur numérique est 0.
ExecuteURL Sert du contenu dynamique (par exemple, un fichier .asp) spécifié dans l’attribut du chemin d'accès pour l’erreur personnalisée.

Si responseMode est défini sur ExecuteURL, la valeur du chemin d’accès doit être une URL relative de serveur.

La valeur numérique est 1.
Redirect Redirige les navigateurs clients vers l’URL spécifiée dans l’attribut du chemin d'accès qui contient le fichier d’erreur personnalisé.

Si responseMode est défini sur Redirect, la valeur du chemin d’accès doit être une URL absolue.

La valeur numérique est 2.
statusCode Attribut uint obligatoire.

Spécifie le numéro du code d’état HTTP pour lequel vous souhaitez créer un message d’erreur personnalisé. Les valeurs acceptables sont comprises entre 400 et 999.
subStatusCode Attribut int facultatif.

Spécifie le numéro du code de sous-état HTTP pour lequel vous souhaitez créer un message d’erreur personnalisé. Les valeurs acceptables sont comprises entre -1 et 999.

La valeur par défaut est -1.

Éléments enfants

Aucune.

Exemple Configuration

L’exemple de configuration suivant, lorsqu’il est inclus dans le fichier Web.config pour un site web ou une application, utilise l’attribut errorMode pour n’autoriser l’affichage de messages d’erreur détaillés que sur l’ordinateur local. Il utilise également l’attribut defaultResponseMode pour définir le mode de réponse pour le site ou l’application. L’exemple supprime ensuite le message d’erreur hérité pour le code d’état 500. Ensuite, il définit l’attribut prefixLanguageFilePath dans le répertoire où IIS doit rechercher une nouvelle page d’erreur personnalisée et définit l’attribut chemin d’accès sur 500.htm, le fichier qui contient le message d’erreur personnalisé.

<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>

Exemple de code

Les exemples suivants ajoutent un nouveau fichier pour toutes les erreurs de code d’état 404 avec un sous-état de 5, que IIS retourne pour les erreurs « Séquence d’URL refusée ». Dans ces exemples, le chemin du préfixe est défini sur « %SystemDrive%\inetpub\custerr », et le nom de fichier est « 404.5.htm ».

AppCmd.exe

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

Remarque

Vous devez veiller à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier ApplicationHost.config.

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()