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
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 Home fare doppio clic su Pagine di errore.
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.
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 .
|
||||||||
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()