Come creare pagine in ASP.NET utilizzando Visual C# .NET di segnalazione errori personalizzate

Traduzione articoli Traduzione articoli
Identificativo articolo: 306355 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato precedentemente pubblicato con il codice di riferimento I306355
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto come utilizzare il codice di Visual C# .NET per intercettare e rispondere agli errori che si verificano in ASP.NET. ASP.NET ha migliorato le opzioni dalla tradizionale Microsoft pagine ASP (ASP) di gestione degli errori. In ASP.NET, Ŕ possibile gestire gli errori a diversi livelli nelle applicazioni.

Nuove funzionalitÓ di ASP.NET

ASP.NET offre numerosi miglioramenti in modo Ŕ possibile gestire e rispondere agli errori. Nelle tradizionali pagine ASP, Ŕ possibile gestire gli errori con "On Error Resume Next" (o blocchi try-catch in JScript). In alternativa, se si esegue Microsoft Internet Information Services (IIS) 5.0, Ŕ possibile utilizzare l'oggetto ASPError per creare una pagina di segnalazione di errore personalizzato. Tuttavia, questi approcci presentano le limitazioni.

ASP.NET fornisce vari livelli in cui Ŕ possibile gestire e rispondere agli errori che possono verificarsi quando si esegue un'applicazione ASP.NET. ASP.NET fornisce tre metodi principali che consentono di intercettare e rispondere agli errori che si verificano: Page_ErrorApplication_Error e file di configurazione dell'applicazione (Web. config).

In questo articolo viene illustrato come utilizzare queste nuove funzionalitÓ nell'applicazione ASP.NET. Anche se in questo articolo viene descritto come fornire pagine di errore personalizzate e segnalazioni generali di errori in relazione direttamente a ASP.NET, in questo articolo non sono descritti altri approcci, come il blocco try-catch-finally e il sistema di eccezioni di Common Language Runtime (CLR) di gestione di errori.

Come utilizzare il metodo Page_Error

Il gestore di evento Page_Error fornisce un modo per intercettare gli errori che si verificano a livello di pagina. ╚ sufficiente visualizzare informazioni sull'errore (come il codice di esempio seguente), oppure Ŕ possibile registrare l'evento o eseguire altre azioni.

Nota. Questo esempio visualizza informazioni dettagliate sull'errore nel browser solo a scopo dimostrativo. Occorre prestare attenzione quando si visualizzano informazioni dettagliate per l'utente finale dell'applicazione, soprattutto quando l'applicazione Ŕ in esecuzione su Internet. Un'azione pi¨ appropriata, Ŕ possibile visualizzare un messaggio all'utente di comunicare che si Ŕ verificato un errore e registrazione effettivamente i dettagli dell'errore specifico nel registro eventi.

Questo esempio viene generata un'eccezione null, che impone un errore nel gestore eventi Page_Load . Attenersi alla seguente procedura per creare la pagina iniziale che verrÓ descritto l'utilizzo del gestore dell'evento Page_Error .
  1. Attenersi alla seguente procedura per aggiungere che un nuovo file denominato PageEvent.aspxto del progetto:
    1. Aprire Microsoft Visual Studio .NET.
    2. In Esplora soluzioni, pulsante destro del mouse sul nodo del progetto, scegliere Aggiungie quindi fare clic su Aggiungi Web Form.
    3. Nella casella di testo nome , digitare PageEvent, quindi scegliere Apri.
  2. A PageEvent, aggiungere il codice riportato di seguito:
    <script language=C# runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
    	throw(new ArgumentNullException());
    }
    
    public void Page_Error(object sender,EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 
    			"<br><b>Error in: </b>" + Request.Url.ToString() +
    			"<br><b>Error Message: </b>" + objErr.Message.ToString()+
    			"<br><b>Stack Trace:</b><br>" + 
    	                  objErr.StackTrace.ToString();
    	Response.Write(err.ToString());
    	Server.ClearError();
    }
    </script> 
    					

    Nota. In questo esempio di codice, l'attributo AutoEventWireup non Ŕ impostata in modo esplicito. In questo caso non esplicitamente assigna valore per l'attributo AutoEventWireup , viene utilizzato il valore predefinito valore true . Se si utilizza Visual Studio .NET per sviluppare yourapplications, il codice del modello Web Form imposta in modo esplicito il valore dell'attributo AutoEventWireup su false. Esiste una differenza importante tra il thatASP.NET del valore predefinito utilizza e il valore predefinito che il codeassigns del modello di Visual Studio .NET per questo attributo. Se il valore dell'attributo AutoEventWireup Ŕ impostato su false, i gestori di eventi dichiarati nel.Notfire di pagina ASPX. Questo potrebbe generare confusione se non conosce su thisfunctionality.
  3. Dal menu File , fare clic su Salva PageEvent.
  4. Destro del mouse sulla pagina e quindi scegliere Visualizza nel Browser per eseguire la pagina. Si noti che viene generato l'errore e reportedaccording per le specifiche del codice.
Nota. ╚ possibile notare che il codice invia una chiamata a ClearError. Impedire l'errore continui al gestore eventi Application_Error .

Inoltre, Ŕ anche considerare l'attributo Inherits nella direttiva @ Page . Se Ŕ impostato Inherits , Ŕ necessario compilare il progetto prima di visualizzare la pagina. Se si compila il progetto prima, viene visualizzato il seguente messaggio di errore:
'PageEvent' non Ŕ un tipo valido

Come utilizzare il metodo Application_Error

Come per il gestore dell'evento Page_Error , Ŕ possibile utilizzare il gestore di eventi Application_Error per intercettare gli errori che si verificano nell'applicazione. A causa di un ambito a livello di applicazione dell'evento, accedere di informazioni di errore di applicazione o gestire altri errori a livello di applicazione che possono verificarsi.

L'esempio che segue si basa sul precedente esempio di codice Page_Error e viene attivato se non Ŕ stato intercettato l'errore in Page_Load nel gestore eventi Page_Error . Il gestore di eventi Application_Error Ŕ specificato nel file Global. asax dell'applicazione. Per semplicitÓ, i passaggi in questa sezione Crea una nuova pagina in cui generare l'eccezione, intercettare l'errore nel gestore eventi Application_Error del file Global. asax e scrivere l'errore nel registro eventi. Quanto riportato di seguito viene illustrato come utilizzare il metodo Application_Error :
  1. Aggiungere un nuovo file denominato AppEvent NomeProgetto.
  2. Per AppEvent, aggiungere il codice riportato di seguito:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Nota. Le informazioni riportate nella sezione "Page_Error" sull'attributo AutoEventWireup valgono anche per il codice di esempio in questo passaggio. Inoltre, nella sezione "Page_Error" per ulteriori informazioni, vedere.
  3. Dal menu File , fare clic su Salva AppEvent.
  4. Aggiungere il gestore di eventi Application_Error nel file Global. asax per intercettare l'errore che youthrow nel gestore eventi Page_Load della pagina AppEvent. Si noti che Ŕ necessario istruzione di addanother using per lo spazio dei nomi System. Diagnostics per Global. asax per utilizzare il registro eventi.

    Aggiungere il codice di thefollowing nel file Global. asax:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString()+ 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	Server.ClearError();
    	//additional actions...
    } 
    					
  5. Salvare il file Global. asax.
  6. In Visual Studio .NET, scegliere Generadal menu Genera .
  7. Destro del mouse sulla pagina e quindi scegliere Visualizza nel Browser. In questo caso la pagina sarÓ vuota, tuttavia, si dovrebbe noticethat che Ŕ stata aggiunta una nuova voce nel registro eventi. In questo esempio crea una voce nel registro dell'applicazione, accessibile dal Visualizzatore eventi. Dopo l'errore di loggingthe Ŕ possibile reindirizzare l'utente a un'altra pagina utente friendlyerror ulteriori o eseguire alcune operazioni aggiuntive, se necessario.

Come utilizzare il file Web. config

Se non si chiama ClearError o intercetta l'errore in Page_Error o Application_Error dal gestore eventi, l'errore viene gestito in base alle impostazioni nella sezione <customErrors>del file Web. config. Nella sezione <customErrors>, Ŕ possibile specificare una pagina di reindirizzamento come pagina di errore predefinita (defaultRedirect) oppure specificare una particolare pagina in base al codice di errore HTTP generato. ╚ possibile utilizzare questo metodo per personalizzare il messaggio di errore ricevuto dall'utente.

Se si verifica un errore che non viene intercettato in nessuno dei precedenti livelli dell'applicazione, viene visualizzata questa pagina personalizzata. In questa sezione viene illustrato come modificare il file Global. asax in modo che non viene mai chiamato ClearError . Di conseguenza, l'errore viene gestito nel file Web. config come l'ultimo punto per intercettare l'errore. </customErrors></customErrors>
  1. Aprire il file Global. asax dalla previousexample.
  2. Commento la riga ClearError per garantire che le superfici di errore nel Web.configfile.
  3. Salvare le modifiche in Global. asax. Il codice dovrebbe nowappear analogo al seguente:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString() + 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	//Server.ClearError();
    	//additional actions...
    } 
    					
  4. Aggiungere il seguente codice per la <customErrors>sectionto reindirizzare l'utente a una pagina personalizzata:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Nota. ╚ necessario modificare il percorso del file nell'attributo defaultRedirect in modo che faccia riferimento a nomi di andapplication del server Web pertinenti.
  5. PoichÚ gli errori intercettati a questo livello sono sentto una pagina di errore predefinita, Ŕ necessario creare una pagina di errore denominata ErrorStatus.htm.Keep presente che si utilizza questo metodo per controllare ci˛ che viene presentato a theuser, in modo che questo esempio viene utilizzata una pagina htm per la pagina di errore. Aggiungere il followingcode a ErrorStatus:
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
    </HEAD>
    <BODY>
         <b>Custom Error page!</b>
         <br>
         You have been redirected here from the <customErrors> section of the 
         Web.config file.
    </BODY>
    </HTML>
    					
  6. Per verificare il codice, salvare i file, compilare il progetto, andthen visualizzare AppEvent nel browser. Si noti che quando viene generato l'errore, si viene reindirizzati alla pagina ErrorStatus.
Anche se Ŕ possibile fare riferimento a una pagina di errore predefinita nel valore dell'attributo defaultRedirect nella sezione <customErrors>, Ŕ inoltre possibile specificare una determinata pagina di reindirizzamento a seconda del codice di errore HTTP generato. Questa opzione consente l'elemento figlio di <error>. Ad esempio:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Nota. La pagina specifica in defaultRedirect della sezione <customErrors>Ŕ un file htm. I

Si noti che la sezione <customErrors>include un attributo mode Ŕ impostato su On. L'attributo mode consente di controllare la modalitÓ di reindirizzamento di errore. Ad esempio, se si sta sviluppando l'applicazione, molto probabile che per visualizzare i messaggi di errore ASP.NET effettivi e non si desidera essere reindirizzato alla pagina di errore pi¨ semplice. L'attributo mode include le seguenti impostazioni: </customErrors></customErrors>
  • In: le eccezioni non gestite reindirizzare l'utente alla pagina specificata defaultRedirect . Questa modalitÓ viene utilizzata principalmente in produzione.
  • Off: gli utenti ricevono le informazioni sull'eccezione e sono non redirectedto pagina defaultRedirect . Questa modalitÓ viene utilizzata principalmente in fase di sviluppo.
  • RemoteOnly: solo gli utenti che accedono al sito sul computer locale (da usinglocalhost) ricevono le informazioni sull'eccezione. Tutti gli altri utenti vengono reindirizzati alla pagina defaultRedirect . Questa modalitÓ viene utilizzata principalmente per il debug.

Risoluzione dei problemi

Nell'installazione predefinita in Microsoft Windows 2000 e Microsoft Windows XP, ASP.NET esegue il codice dell'applicazione Web in un processo di lavoro. Un account locale senza privilegi denominato account ASPNET predefinito Ŕ l'identitÓ di questo processo. Nelle versioni beta di ASP.NET, l'identitÓ del processo Ŕ System, un potente account amministrativo dotato di privilegi sul computer.

Nell'installazione predefinita in Windows Server 2003 (IIS 6), ASP.NET esegue il codice dell'applicazione Web in un processo di lavoro. L'identitÓ di questo processo viene impostato un account limitato denominato NetworkService.

Per ulteriori informazioni su questa modifica e sui suoi effetti sull'esecuzione di codice in questo articolo e altro codice che potrebbe essere necessario ulteriori diritti di accesso, visitare i seguenti siti Web:
Modifiche alla protezione della versione 1 per il Microsoft.NET Framework
http://msdn2.microsoft.com/en-us/library/ms994923.aspx

Riferimenti

Per ulteriori informazioni, visitare i seguenti siti Web Microsoft:
Gestione delle eccezioni in .NET

Metodo ClearError

Centro per sviluppatori MSDN .NET

Home Page di Microsoft .NET

ProprietÓ

Identificativo articolo: 306355 - Ultima modifica: martedý 29 ottobre 2013 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Chiavi:á
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtit
Traduzione automatica articoli
IMPORTANTE: il presente articolo Ŕ stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l?obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre Ŕ perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilitÓ per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualitÓ della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 306355
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com