Errori <HTTP httpErrors>
Panoramica
L'elemento <httpErrors>
consente di configurare messaggi di errore personalizzati per il sito Web o l'applicazione. I messaggi di errore personalizzati consentono di fornire una risposta descrittiva o più informativa inviando un file, restituendo un'altra risorsa o reindirizzando l'utente a un URL quando i visitatori del sito non riescono ad accedere al contenuto richiesto. È possibile ad esempio personalizzare le pagine dei messaggi di errore del sito Web in modo da avere lo stesso aspetto del resto del sito.
L'elemento <httpErrors>
contiene una raccolta di <error>
elementi, ognuno dei quali definisce un messaggio di errore usato da IIS per rispondere a errori HTTP specifici. È possibile aggiungere messaggi di errore personalizzati a IIS aggiungendo un <error>
elemento all'elemento nel file di Web.config per il sito, l'applicazione o l'URL <httpErrors>
. Ogni <error>
elemento usa l'attributo responseMode per specificare se IIS gestisce contenuto statico, contenuto dinamico o reindirizza a un URL separato in risposta a un errore.
È possibile utilizzare l'elemento <remove>
per rimuovere un messaggio di errore specifico dalla raccolta di messaggi di errore ereditati dal sito o dall'applicazione da un livello superiore nella gerarchia di configurazione iis. È anche possibile usare l'elemento <clear>
per rimuovere tutti i messaggi di errore HTTP dalla raccolta di messaggi di errore HTTP ereditati dal sito o dall'applicazione.
L'elemento <httpErrors>
contiene anche attributi che configurano IIS 7 per elaborare le richieste che causano errori. L'attributo existingResponse definisce le operazioni che IIS 7 esegue a una risposta esistente quando il server restituisce un codice di stato di errore HTTP. L'attributo defaultPath definisce il percorso di una pagina di errore del cliente se si sceglie File per l'attributo responseMode in un <error>
elemento.
L'attributo detailedMoreInformationLink specifica un collegamento a ulteriori informazioni su un errore specifico.
L'elemento <httpErrors>
può anche contenere un attributo errorMode che è possibile usare per controllare il livello di dettaglio restituito da IIS a un browser quando si verifica un errore HTTP. È possibile impostare l'attributo errorMode su DetailedLocalOnly, ovvero l'impostazione predefinita oppure impostarlo su Personalizzato o Dettagliato. Se si specifica DetailedLocalOnly o se non si specifica un valore errorMode, IIS restituisce informazioni dettagliate sull'errore solo al browser nel server locale e un messaggio di errore personalizzato a un browser in un computer esterno. Se si imposta il valore errorMode su Personalizzato, IIS restituisce solo messaggi di errore personalizzati a tutti i browser che richiedono. Se si imposta il valore errorMode su Detailed, IIS restituisce informazioni dettagliate sull'errore a tutti i browser che richiedono. Il valore predefinito DetailedLocalOnly consente di risolvere gli errori HTTP nel server locale senza esporre informazioni riservate a browser esterni.
Per impostazione predefinita, IIS gestisce i messaggi di errore definiti nei file archiviati nella cartella %SystemRoot%\Help\IisHelp\Common. È possibile creare un messaggio di errore personalizzato per gli utenti e configurare IIS per restituire questa pagina ogni volta che si verifica un errore HTTP specifico nel sito.
Compatibilità
Versione | Note |
---|---|
IIS 10.0 | L'elemento <httpErrors> non è stato modificato in IIS 10.0. |
IIS 8,5 | L'elemento <httpErrors> non è stato modificato in IIS 8.5. |
IIS 8,0 | L'elemento <httpErrors> non è stato modificato in IIS 8.0. |
IIS 7,5 | L'attributo allowAbsolutePathsWhenDelegated è stato aggiunto all'elemento <httpErrors> in IIS 7.5 |
IIS 7.0 | L'elemento <httpErrors> è stato introdotto in IIS 7.0. |
IIS 6.0 | L'elemento <httpErrors> sostituisce la proprietà HttpErrors di IIS 6.0 dell'oggetto metabase IIsWebService . |
Installazione
L'elemento <httpErrors>
è incluso nell'installazione predefinita di IIS 7.
Procedure
Come aggiungere una pagina di errore personalizzata
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).
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.
Nel riquadro Azioni fare clic su Aggiungi...
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.
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.
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.
Configurazione
È possibile configurare l'elemento <httpErrors>
a livello di server nel file ApplicationHost.config e a livello di sito e applicazione nel file di Web.config appropriato.
Attributi
Attributo | Descrizione | ||||||||
---|---|---|---|---|---|---|---|---|---|
allowAbsolutePathsWhenDelegated |
Attributo booleano facoltativo. Se impostato su true, i percorsi assoluti sono consentiti per le pagine di errore personalizzate quando la <httpErrors> sezione viene delegata. Se impostato su false, sono consentiti solo i percorsi relativi alla radice del sito.Il valore predefinito è false . |
||||||||
defaultPath |
Attributo stringa facoltativo. Specifica il percorso predefinito della pagina di errore personalizzata. Il tipo di percorso è determinato dall'attributo defaultResponseMode . Se si sceglie File, viene restituito il percorso del file. Se si sceglie il tipo di percorso ExecuteURL o Reindirizzamento , viene restituito l'URL della pagina di errore personalizzata. |
||||||||
defaultResponseMode |
Attributo di enumerazione facoltativo. Specifica la modalità di restituzione del contenuto dell'errore personalizzato. L'attributo defaultResponseMode può essere uno dei valori possibili seguenti; il valore predefinito è File .
|
||||||||
detailedMoreInformationLink |
Attributo stringa facoltativo. Specifica un collegamento, visualizzato nella parte inferiore della pagina, in una pagina con informazioni più dettagliate su un errore specifico. È possibile utilizzare questa proprietà per indirizzare gli utenti finali a un percorso personalizzato per informazioni sugli errori. Lo stato, lo stato secondario, HRESULT e l'ID del messaggio vengono inviati come parte della stringa di query. Il valore predefinito è https://go.microsoft.com/fwlink/?LinkID=62293 . |
||||||||
errorMode |
Attributo di enumerazione facoltativo. Specifica se gli errori HTTP sono abilitati. L'attributo errorMode può essere uno dei valori seguenti; il valore predefinito è DetailedLocalOnly .
|
||||||||
existingResponse |
Attributo di enumerazione facoltativo. Specifica cosa accade a una risposta esistente quando il codice di stato HTTP è un errore, ad esempio i codici >di risposta = 400. L'attributo existingResponse può essere uno dei valori seguenti; il valore predefinito è Auto .
|
Elementi figlio
Elemento | Descrizione |
---|---|
error |
Elemento facoltativo. Aggiunge un errore HTTP alla raccolta di errori HTTP. |
remove |
Elemento facoltativo. Rimuove un riferimento a un errore HTTP dalla raccolta di errori HTTP. |
clear |
Elemento facoltativo. Rimuove tutti i riferimenti agli errori HTTP dalla raccolta di errori HTTP. |
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()