Condividi tramite


Aggiunta di errori <HTTP>

Panoramica

L'elemento <error><httpErrors> della raccolta aggiunge un mapping degli errori univoco alla raccolta di errori HTTP.

Compatibilità

Versione Note
IIS 10.0 L'elemento <error> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <error> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <error> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <error> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <error><httpErrors> della raccolta è stato introdotto in IIS 7.0.
IIS 6.0 L'insieme <httpErrors> sostituisce la sezione HTTPErrors di IIS 6.0 dell'oggetto metabase IIsWebService .

Installazione

L'elemento <error><httpErrors> della raccolta è incluso nell'installazione predefinita di IIS 7.

Procedure

Come aggiungere una pagina di errore personalizzata

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni espandere il nome del server, espandere Siti e quindi passare al sito Web o all'applicazione per cui si desidera configurare pagine di errore personalizzate.

  3. Nel riquadro Home fare doppio clic su Pagine di errore.
    Screenshot del riquadro Home con l'opzione Pagine di errore evidenziata.

  4. Nel riquadro Azioni fare clic su Aggiungi...

  5. Nella finestra di dialogo Aggiungi pagina errore personalizzata digitare il numero del codice di stato HTTP per il quale si desidera creare un messaggio di errore personalizzato.
    Screenshot della finestra di dialogo Aggiungi pagina errore personalizzata, che mostra il campo Codice di stato.

  6. Nella sezione Azione di risposta eseguire una delle operazioni seguenti:

    • Selezionare Inserisci contenuto dal file statico nella risposta di errore per gestire il contenuto statico, ad esempio un file di .html, per l'errore personalizzato.
    • Selezionare Execute a URL on this site (Esegui un URL in questo sito ) per gestire il contenuto dinamico, ad esempio un file asp per l'errore personalizzato.
    • Selezionare Rispondi con un reindirizzamento 302 per reindirizzare i browser client a un URL diverso che contiene il file di errore personalizzato.
  7. Nella casella di testo Percorso file digitare il percorso della pagina di errore personalizzata se si sceglie Inserisci contenuto da un file statico nella risposta di errore o nell'URL della pagina di errore personalizzata se si utilizza l'opzione Esegui un URL in questo sito o Rispondi con un reindirizzamento 302 e quindi fare clic su OK.

    Nota

    Se si seleziona Esegui un URL in questo sito, il percorso deve essere un percorso relativo. Se si seleziona Rispondi con un reindirizzamento 302, l'URL deve essere un URL assoluto.

    Nota

    Non è possibile personalizzare gli errori HTTP seguenti: 400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503 e 505.

Configurazione

Attributi

Attributo Descrizione
path Attributo stringa obbligatorio.

Specifica il percorso o l'URL del file che viene fornito in risposta all'errore HTTP specificato dagli attributi statusCode e subStatusCode . Se si sceglie la modalità di risposta file, specificare il percorso della pagina di errore personalizzata. Se si sceglie la modalità di risposta ExecuteURL , il percorso deve essere un URL relativo al server, ad esempio /404.htm. Se si sceglie la modalità di risposta reindirizzamento , è necessario immettere un URL assoluto (ad esempio, www.contoso.com/404.htm).
prefixLanguageFilePath Attributo stringa facoltativo.

Specifica il segmento di percorso iniziale durante la generazione del percorso per un errore personalizzato. Questo segmento viene visualizzato prima della parte specifica della lingua del percorso di errore personalizzato. Ad esempio, nel percorso C:\Inetpub\Custerr\en-us\404.htm, C:\Inetpub\Custerr è il prefissoLanguageFilePath.
responseMode Attributo di enumerazione facoltativo.

Specifica la modalità di restituzione del contenuto dell'errore personalizzato.

L'attributo responseMode può essere uno dei valori possibili seguenti. Il valore predefinito è File.
Valore Descrizione
File Serve contenuto statico, ad esempio un file di .html per l'errore personalizzato.

Se responseMode è impostato su File, il valore dell'attributo path deve essere un percorso di file.

Il valore numerico è 0.
ExecuteURL Gestisce il contenuto dinamico ,ad esempio un file ASP, specificato nell'attributo path per l'errore personalizzato.

Se responseMode è impostato su ExecuteURL, il valore del percorso deve essere un URL relativo al server.

Il valore numerico è 1.
Redirect Reindirizza i browser client a un URL specificato nell'attributo path che contiene il file di errore personalizzato.

Se responseMode è impostato su Reindirizzamento, il valore del percorso deve essere un URL assoluto.

Il valore numerico è 2.
statusCode Attributo uint obbligatorio.

Specifica il numero del codice di stato HTTP per il quale si desidera creare un messaggio di errore personalizzato. I valori accettabili sono compresi nell'intervallo compreso tra 400 e 999.
subStatusCode Attributo int facoltativo.

Specifica il numero del codice di stato secondario HTTP per il quale si desidera creare un messaggio di errore personalizzato. I valori accettabili sono compresi nell'intervallo compreso tra -1 e 999.

Il valore predefinito è -1.

Elementi figlio

Nessuno.

Esempio di configurazione

Nell'esempio di configurazione seguente, se incluso nel file di Web.config per un sito Web o un'applicazione, viene utilizzato l'attributo errorMode per consentire solo la visualizzazione di messaggi di errore dettagliati nel computer locale. Usa anche l'attributo defaultResponseMode per impostare la modalità di risposta per il sito o l'applicazione. L'esempio rimuove quindi il messaggio di errore ereditato per il codice di stato 500. Imposta quindi l'attributo prefixLanguageFilePath sulla directory in cui IIS deve cercare una nuova pagina di errore personalizzata e imposta l'attributo path su 500.htm, il file che contiene il messaggio di errore personalizzato.

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

Codice di esempio

Gli esempi seguenti aggiungono un nuovo file per tutti gli errori di codice di stato 404 con uno stato secondario pari a 5, che IIS restituisce per gli errori "URL Sequence Denied". In questi esempi il percorso del prefisso è impostato su "%SystemDrive%\inetpub\custerr" e il nome del file viene specificato come "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

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file 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()