Cum de a crea eroare raportarea pagini în ASP.NET folosind Visual C# .NET

Traduceri articole Traduceri articole
ID articol: 306355 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

Rezumat

Acest articol descrie cum se utilizează cod Visual C# .NET pentru a prinde și să răspundă la erori atunci când ele apar în ASP.NET. ASP.NET s-a îmbunătățit de eroare de manipulare opțiuni din tradiționale Microsoft Active Server Pages (ASP). În ASP.NET, te descurci erori la mai multe niveluri diferite în aplicațiile dumneavoastră.

Caracteristici noi în ASP.NET

ASP.NET oferă mai multe progrese în cum poate manipula și de a răspunde la erori. În ASP tradiționale, te descurci erori cu "Pe eroare Resume Next" (sau try-catch blocuri în JScript). Alternativ, dacă executați Microsoft Internet Information Services (IIS) 5.0, utilizați obiectul ASPError pentru a crea o pagină de eroare particularizată de raportare. Cu toate acestea, aceste abordări au limitele lor.

ASP.NET oferă mai multe niveluri la care poate manipula și de a răspunde la erori care pot apărea atunci când executați o aplicație de ASP.NET. ASP.NET oferă trei metode principale, care vă permit să capcană și să răspundă la erori atunci când ele apar: Page_Error, Application_Errorși fișier de configurare a aplicației (Web.config).

Acest articol demonstrează cum se utilizează aceste noi caracteristici în cererea dumneavoastră de ASP.NET. Deși acest articol descrie modul de a oferi pagini de eroare și raportare erori generale în care se referă direct la ASP.NET, acest articol nu descrie alte eroare abordări bloc try-catch-în sfârșit și sistemul de motor comun de execuție pentru limbaje (CLR) excepție de manipulare.

Cum să utilizați metoda Page_Error

Page_Error eveniment handler oferă o modalitate de a capta erorile care apar la nivel de pagină. Pur și simplu puteți afișa informațiile de eroare (ca mostre de cod să urmeze nu), sau puteți conecta evenimentul sau efectua unele alte acțiuni.

Notă Acest exemplu afișează informații detaliate eroare în browser-ul doar pentru scopuri demonstrative. Veți dori să fie prudenți atunci când se afișează informații detaliate asupra utilizatorului final a cererii, în special atunci când aplicația rulează pe Internet. O acțiune mai adecvat ar fi pentru a afișa un mesaj pentru utilizator notificarea ei că a apărut o eroare, și apoi de fapt logare detalii specifice de eroare în cazul log.

Acest exemplu aruncă o excepție nul, care obligă o eroare să apară în Page_Load eveniment handler. Urmați acești pași pentru a crea pagina inițială care va demonstra folosind handler de eveniment Page_Error .
  1. Urmați acești pași pentru a adăuga un nou dosar numit PageEvent.aspxto proiectul dumneavoastră:
    1. Deschideți Microsoft Visual Studio .NET.
    2. În soluție de Explorer, faceți clic dreapta pe nodul de proiect, punctul de a adunași apoi faceți clic pe Adăugați formular Web.
    3. În caseta de text nume , tip PageEvent.aspx, apoi faceți clic pe Deschidere.
  2. Adăugați următorul cod la PageEvent.aspx:
    <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> 
    					

    Notă În acest eșantion de cod, atributul AutoEventWireup nu este setată în mod explicit. Dacă tu a face nu explicit assigna valoare la atributul AutoEventWireup , implicit valoarea adevărat este utilizat. Dacă utilizați Visual Studio .NET pentru a dezvolta yourapplications, codul șablonului formular Web setează în mod explicit valoarea atributului AutoEventWireupfalse. Există o diferență importantă între implicit valoarea thatASP.NET utilizări, și implicit valoarea care Visual Studio .NET șablon codeassigns la acest atribut. Dacă valoarea atributului AutoEventWireup este setat la fals, gestionari de eveniment care sunt declarate în.Pagina ASPX Ikish. Acest lucru poate fi confuz, dacă nu știți despre thisfunctionality.
  3. Din meniul fișier , faceți clic pe Salva PageEvent.aspx.
  4. Faceți clic dreapta pe pagină, și apoi faceți clic pe vizualizare Proiect în browser-ul pentru a rula filme. Observați că eroare este aruncat și reportedaccording la specificațiile de cod.
Notă Este posibil să observați că codul probleme un apel sosit la Server.ClearError. Acest lucru previne eroarea de a continua să Application_Error eveniment handler.

În plus, de asemenea, ar trebui să ia notă de atributul Inherits în directivă @ Page . Dacă este setat Inherits , trebuie să construiască proiectul înainte de navigați la pagina. Dacă construi primul proiect, primiți următorul mesaj de eroare:
'Project.PageEvent' nu este un tip valid

Cum să utilizați metoda Application_Error

Similar cu handler de eveniment Page_Error , puteți utiliza handler de eveniment Application_Error pentru a capta erorile care apar în cererea dumneavoastră. Ca urmare a evenimentului la nivel de cerere de aplicare, puteți jurnal de informații de eroare aplicatie sau se ocupe de alte erori la nivel de aplicație care pot să apară.

Proba de urmat este bazat pe precedent eșantion de cod Page_Error și ar fi concediat dacă eroarea în Page_Load nu a fost prins în Page_Error de tratare a evenimentului. Application_Error de tratare a evenimentului este specificat în fișierul Global.asax cererii dumneavoastră. Pentru simplitate, pașii în această secțiune a crea o pagină nouă în care pentru a arunca o excepție, capcana eroare în Application_Error de tratare a evenimentului din fișierul Global.asax și scrie eroare la jurnal de evenimente. Următorii pași demonstrează cum se utilizează Application_Error metodă:
  1. Adăugați un nou dosar numit AppEvent.aspx pentru a yourproject.
  2. Adăugați următorul cod la AppEvent.aspx:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Notă Informațiile au discutat în secțiunea "Page_Error" despre atributul AutoEventWireup se aplică, de asemenea, proba de cod în acest pas. A se vedea theinformation în secțiunea de "Page_Error" pentru mai multe detalii.
  3. Din meniul fișier , faceți clic pe Salva AppEvent.aspx.
  4. Adauga handler de eveniment Application_Error în fișierul Global.asax pentru a prinde eroarea care youthrow in Page_Load de tratare a evenimentului de la pagina AppEvent.aspx. Observați că trebuie să vă addanother folosind declarație namespace System.Diagnostics să Global.asax a utiliza jurnal de evenimente.

    Adauga thefollowing cod în fișierul 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. Salvați fișierul Global.asax.
  6. În Visual Studio .NET, construi meniul, faceți clic pe clădire.
  7. Faceți clic dreapta pe pagină, și apoi faceți clic pe vizualizare Proiect în browser-ul. În acest caz pagina va fi gol, cu toate acestea, ar trebui să noticethat s-a adăugat o nouă intrare jurnal de evenimente. Acest eșantion face o intrare jurnal aplicație, care este accesibil din Event Viewer. După loggingthe eroare ați putea dori pentru a redirecționa utilizatorul la o altă pagină de utilizator-friendlyerror mai multe, sau efectuarea unor acțiuni suplimentare, dacă este necesar.

Cum se utilizează fi?ierul Web.config

Dacă nu aveți apel sosit Server.ClearError sau capcana eroare în Page_Error sau Application_Error de tratare a evenimentului, eroarea este manipulat bazate pe setările din secțiunea <customErrors>din fi?ierul Web.config. În secțiunea <customErrors>, puteți specifica o pagină de redirecționare ca o pagină de eroare implicite (defaultRedirect) sau specifica pentru o anumită pagină bazate pe cod de eroare HTTP care este ridicat. Puteți utiliza această metodă pentru a particulariza mesajul de eroare utilizatorul primește.

Dacă apare o eroare care nu este prins la oricare dintre nivelurile anterioare în cererea dumneavoastră, este afișată această pagină particularizată. Această secțiune Arată cum să modificați fișierul Global.asax, astfel încât Server.ClearError nu este niciodată numit. Ca urmare, eroarea este manipulat în fi?ierul Web.config ca ultimul punct pentru a prinde eroarea. </customErrors></customErrors>
  1. Deschideți fișierul Global.asax la previousexample.
  2. Comentați linia de Server.ClearError să se asigure că suprafețele eroare în Web.configfile.
  3. Salva?i modificările la Global.asax. Codul ar trebui să nowappear similar cu următorul:
    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. Adăugați următorul cod la <customErrors>sectionto redirecționa utilizatorul la o pagină personalizată:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Notă Trebuie să modificați calea de fișier în atribut defaultRedirect astfel că aceasta face referire relevante server web andapplication nume de sign-in.
  5. Deoarece erorile care sunt prinse la acest nivel sunt sentto o pagină de eroare implicite, trebuie să creați o pagină de eroare numit ErrorStatus.htm.Keep că utilizați această metodă pentru a controla ceea ce este prezentat la theuser, astfel încât acest exemplu utilizează o pagină de .htm pentru pagina de eroare. Adauga followingcode la ErrorStatus.htm:
    <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. Pentru a testa codul, salvați fișierele, construi proiectul, andthen Vezi AppEvent.aspx în browser. Observați că, atunci când eroare este aruncat, veți fi redirecționat la pagina ErrorStatus.htm.
Deși puteți de referință o pagină de eroare implicite în valoare de atributul defaultRedirect în sec?iunea <customErrors>, puteți specifica o anumită pagină pentru a redirecționa bazate pe cod de eroare HTTP care este ridicat. Elementul de copil <error>permite această opțiune. De exemplu:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Notă Pagina pe care este specificat în defaultRedirect din secțiunea de <customErrors>este un fișier .htm. AM

Observați că în secțiunea <customErrors>include un atribut mode , care este setat să pe. Atributul mode este utilizat pentru a controla cum apare eroare de redirectare. De exemplu, dacă sunt dezvoltarea cererii, cel mai probabil doresc pentru a vedea mesajele de eroare ASP.NET reale și nu vreau să fi redirecționat la pagina de eroare mai ușor de utilizat. Atributul mode include următoarele setări: </customErrors></customErrors>
  • Pe: Unhandled excepții redirecționa utilizatorul la pagina de specificat defaultRedirect . Acest mod este utilizat în principal în producție.
  • Off: utilizatorii sunt nu redirectedto filme defaultRedirect și primi informații de excepție. Acest mod este utilizat în principal în dezvoltare.
  • RemoteOnly: Doar utilizatorii care accesează site-ul pe computer local (prin usinglocalhost) primesc informații de excepție. Toți ceilalți utilizatori sunt redirectionat catre pagina defaultRedirect . Acest modul este folosit în principal pentru depanare.

Depanare

În sale implicit instalarea Microsoft Windows 2000 și Microsoft Windows XP, ASP.NET se execută codul de aplicație web într-un proces de lucrător. Identitatea acestui proces implicit un unprivileged local socoteală numit în contul de ASPNET. În versiuni beta de ASP.NET, identitatea procesul a fost sistemul, un puternic contul administrativ cu multe privilegii pe masina.

În sale implicit instalarea pe Windows Server 2003 (IIS 6), ASP.NET se execută codul de aplicație web într-un proces de lucrător. Identitatea acestui proces implicit un cont limitat numit NetworkService.

Pentru mai multe informații despre această schimbare și cum pot efectul rulează codul în acest articol, și alte alt cod care ar putea avea nevoie de drepturi de acces suplimentar, vizitați următoarele site-uri Web:
Versiunea 1 de securitate se schimbă pentru Microsoft .NET Framework
http://msdn2.Microsoft.com/en-us/library/ms994923.aspx

Referințe

Pentru mai multe informații, vizitați site-uri Web Microsoft:
Management de excepție în .NET

Metoda de HttpServerUtility.ClearError

Centrul de dezvoltare MSDN .NET

Pagina de pornire Microsoft .NET

Proprietă?i

ID articol: 306355 - Ultima examinare: 29 octombrie 2013 - Revizie: 2.0
Se aplică la:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Cuvinte cheie: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtro
Traducere automată
IMPORTANT: Acest articol este tradus cu ajutorul software-ului Microsoft de traducere automată ?i poate fi corectat prin intermediul tehnologiei Community Translation Framework (CTF). Microsoft oferă articole traduse automat, post-editate de comunitate ?i articole traduse de oameni, pentru a permite accesul la toate articolele din Baza noastră de cuno?tin?e în mai multe limbi. Articolele traduse automat ?i post-editate pot con?ine gre?eli de vocabular, sintaxă ?i/sau gramatică. Microsoft nu este responsabil de inexactită?ile, erorile sau daunele cauzate de traducerea gre?ită a con?inutului sau de utilizarea acestuia de către clien?i. Găsi?i mai multe informa?ii despre traducerea în colaborare la http://support.microsoft.com/gp/machine-translation-corrections/ro.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 306355

Trimite?i feedback

 

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