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

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
Pentru o versiune de Microsoft Visual Basic .NET din acest articol, a se vedea 308132.

Acest articol se referă la următoarele namespace Microsoft .NET Framework Class Library:
  • System.Diagnostics

ÎN ACEASTĂ ACTIVITATE

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
încercaţi să prinde în cele din urmă capcana erori

Avertisment: acest articol a fost tradus automat

Propriedades

ID do Artigo: 306355 - Última Revisão: 10/29/2013 01:49:00 - Revisão: 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 KbMtro
Comentários