Al momento sei offline in attesa che la connessione Internet venga ristabilita

Il tuo browser non è supportato

Devi aggiornare il browser per usare il sito.

Esegui l'aggiornamento all'ultima versione di Internet Explorer

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

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I306355
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
Per una versione di Microsoft Visual Basic .NET di questo articolo, vedere 308132.

In questo articolo si intende lo spazio dei nomi di libreria di classi.NET Framework di Microsoft riportato di seguito:
  • System. Diagnostics

IN QUESTA ATTIVITÀ

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:
try catch finally rilevare gli errori

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 306355 - Ultima revisione: 10/29/2013 00:42:00 - Revisione: 2.0

  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtit
Feedback
//c1.microsoft.com/c.gif?DI=4050&did=1&t=">dy>e('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> rotocol) + "//c.microsoft.com/ms.js'><\/script>");