Ako vytvoriť vlastné chybové hlásenia stránky ASP.NET pomocou Visual C# .NET

Preklady článku Preklady článku
ID článku: 306355 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

Súhrn

Tento článok popisuje, ako používať Visual C# .NET kódu do pasce a reagovať na chyby, keď k nim dôjde v ASP.NET. ASP.NET zlepšila chýb možnosti z tradičných Microsoft stránok ASP (Active Server). V ASP.NET, môžete zvládnuť chyby na niekoľkých rôznych úrovniach vo vašich aplikáciách.

Nové funkcie v ASP.NET

ASP.NET ponúka niekoľko pokroky v ako môžete zvládnuť a reagovať na chyby. V tradičnej ASP, zvládnete chyby "Na Error Resume Next" (alebo skúste vedľajšieho úlovku bloky v jazyku JScript). Prípadne, ak používate Microsoft Internet Information Services (IIS) 5.0, používate ASPError objekt vytvoriť vlastné chybové hlásenia stránky. Avšak, tieto prístupy majú svoje obmedzenia.

ASP.NET poskytuje niekoľko úrovní, v ktorom môžete spracovať a reagovať na chyby, ktoré sa môžu vyskytnúť pri spustení ASP.NET aplikácie. ASP.NET poskytuje tri hlavné metódy, ktoré umožňujú pasce a reagovať na chyby, keď k nim dôjde: Page_Error, Application_Errora konfiguračného súboru aplikácie (Web.config).

Tento článok ukazuje ako používať tieto nové funkcie v ASP.NET aplikácie. Hoci tento článok popisuje ako vlastné chybové stránky a všeobecné chybové hlásenia sa týka priamo ASP.NET, tohto článku sa nepopisuje iných chýb prístupy, ako napríklad bloku try-catch-konečne a spoločný jazyk Runtime (CLR) systém výnimiek.

Ako používať metódu Page_Error

Page_Error obsluhy udalostí poskytuje spôsob pasce chyby, ktoré sa vyskytujú na stránka úrovni. Môžete jednoducho Zobraziť informácie o chybe (ako ukážkový kód nasledovať), alebo môžete prihlásiť akcie alebo vykonať nejakú inú akciu.

Poznámka Tento príklad zobrazuje podrobné informácie o chybe v prehliadači len pre demonštračné účely. Budete chcieť byť opatrní pri zobrazovanie podrobných informácií koncovému používateľovi žiadosti, najmä keď je aplikácia spustená na internete. Vhodnejšie opatrenia by sa Zobraziť správu užívateľovi oznámi im, že došlo k chybe, a potom prihlasoval konkrétne chybové Podrobnosti v prípade denníka.

V tomto príklade hádže null výnimky, ktorá núti chyba vyskytuje v Page_Load obsluhy udalostí. Postupujte podľa týchto krokov Vytvorte úvodnej stránky, ktorá bude demonštrovať, pomocou Page_Error obsluhy udalostí.
  1. Postup pridať nový súbor s názvom PageEvent.aspxto váš projekt:
    1. Otvorte program Microsoft Visual Studio .NET.
    2. V roztok Explorer, kliknite pravým tlačidlom myši na projekt uzol, ukážte na položku Pridaťa potom kliknite na tlačidlo Pridať webový formulár.
    3. V textovom poli názov zadajte PageEvent.aspx, a potom kliknite na tlačidlo Otvoriť.
  2. Pridať nasledujúci kód do 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> 
    					

    Poznámka Tento kód vzorky, AutoEventWireup atribút nie sú explicitne nastavené. Ak nemáte výslovne assigna hodnota AutoEventWireup atribút, predvolená hodnota pravda sa používa. Ak používate Visual Studio .NET rozvíjať yourapplications, kód webového formulára šablóny explicitne nastaví AutoEventWireup hodnotu atribútu nepravdivé. Existuje dôležitý rozdiel medzi thatASP.NET používa predvolené hodnoty a predvolenú hodnotu Visual Studio .NET šablónu codeassigns pre tento atribút. Ak hodnota AutoEventWireup atribút je nastavená na nepravdivé, obsluhy udalostí, ktoré sú deklarované v.ASPX stránky robiť notfire. To môže byť mätúce, ak neviete o thisfunctionality.
  3. V ponuke súbor kliknite na položku Uložiť PageEvent.aspx.
  4. Kliknite pravým na stránke a potom kliknite na tlačidlo Zobraziť v prehľadávači na spustenie stránky. Všimnite si, že chyba je hodený a reportedaccording kód špecifikácie.
Poznámka Môžete si všimnúť, že kód problémov volajte Server.ClearError. Zabraňuje to chyba naďalej obsluha udalosti Application_Error .

Okrem toho ste mali tiež vziať na vedomie atribút Inherits v @ Page smernica. Ak Inherits , musíte vybudovať projekt skôr, ako ste prejdite na stránku. Ak nechcete stavať projekt prvej, dostanete nasledovné chybové hlásenie:
"Project.PageEvent" nie je platný typ

Ako používať metódu Application_Error

Podobná Page_Error obsluhy udalostí, môžete použiť Application_Error obsluhu udalostí do pasce chyby, ktoré sa vyskytujú vo vašej aplikácii. Z udalostí aplikácie-široký rozsah, môžete log informácie o chybe aplikácie alebo zvládnuť ďalšie aplikácie-na úrovni chyby, ktoré sa môžu vyskytnúť.

Vzorky sledovať vychádza z predchádzajúceho kód vzorky Page_Error a by byť vyhodený, ak bola chyba v Page_Load nie je uväznený v Page_Error obsluhy udalostí. Obsluha udalosti Application_Error je zadaný v súbore Global.asax vašej žiadosti. Pre jednoduchosť postup v tejto sekcii vytvoriť novú stránku o hodiť výnimkou a pasce chyby obsluhy udalostí Application_Error Global.asax súboru zapisovať chyby do denníka udalostí. Nasledovné kroky popisujú ako používať metódu Application_Error :
  1. Pridať nový súbor s názvom AppEvent.aspx yourproject.
  2. Pridať nasledujúci kód do AppEvent.aspx:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Poznámka Diskutovali v sekcii "Page_Error" o AutoEventWireup atribút informácií sa vzťahuje aj na vzorky kód v tomto kroku. Vidieť theinformation v sekcii "Page_Error" pre viac informácií.
  3. V ponuke súbor kliknite na položku Uložiť AppEvent.aspx.
  4. Pridať obsluhu udalostí Application_Error Global.asax súbor do pasce chyba že youthrow v Page_Load obsluhy udalostí na stránke AppEvent.aspx. Všimnite si, že musíte addanother pomocou vyhlásenie pre System.Diagnostics priestor názvov na Global.asax použiť denník udalostí.

    Pridať nasledujúcich kód do Global.asax súbor:
    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. Uložte Global.asax.
  6. V Visual Studio .NET, budovať ponuke stavať.
  7. Kliknite pravým na stránke a potom kliknite na tlačidlo Zobraziť v prehľadávači. V tomto prípade bude prázdne stránky, mali by ste však noticethat bol pridaný nový záznam v denníku udalostí. Táto vzorka je záznam v denníku aplikácie, ktorá je prístupná zo zobrazovača udalostí. Po loggingthe chybe môžete presmerovať užívateľa na inú stránku viac user-friendlyerror, alebo vykonať niektoré ďalšie kroky v prípade potreby.

Ako používať súbor Web.config

Ak ste nevolajte Server.ClearError alebo pasce chyba Page_Error alebo obsluha udalosti Application_Error , chyba je riešené na základe nastavenia v sekcii <customErrors>v súbore Web.config. V <customErrors>sekcii, môžete zadať presmerovanie stránky ako predvolené chybové stránky (defaultRedirect) alebo špecifikovať na konkrétnu stránku na základe chybový kód HTTP, ktorý je zvýšený. Túto metódu môžete použiť na vlastné chybové hlásenie, ktoré užívateľ dostane.

Ak sa vyskytne chyba, ktorá nie je chytený na ktorejkoľvek predchádzajúcej úrovne vo vašej aplikácii, táto Vlastná stránka zobrazená. Táto sekcia ukazuje, ako upraviť Global.asax súbor tak, že nikdy sa nazýva Server.ClearError . Ako výsledok, chyba je riešený v súbore Web.config ako posledný bod do pasce sa vyskytla chyba. </customErrors></customErrors>
  1. Otvorte súbor Global.asax z previousexample.
  2. Zakomentujte riadok Server.ClearError zabezpečiť chyba povrchy v Web.configfile.
  3. Uložiť zmeny do Global.asax. Kód by mal nowappear podobné nasledovnému:
    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. Pridať nasledujúci kód do <customErrors>sectionto presmerovať užívateľa na vlastnú stránku:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Poznámka Cesta k súboru v atribúte defaultRedirect musíte zmeniť tak, aby sa odkazy na príslušné názvy webových serverov andapplication.
  5. Pretože chyby, ktoré sú uväznení na tejto úrovni sú sentto predvolené chybové stránky, musíte vytvoriť chybové stránka s názvom ErrorStatus.htm.Keep na pamäti, že používate tejto metódy na kontrolu, čo je prezentované na theuser, takže tento príklad používa .htm stránku pre chybovú stránku. Pridať followingcode na 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. Ak chcete testovať kód, uložiť súbory, vybudovať projektu, andthen Zobraziť AppEvent.aspx v prehliadači. Všimnite si, že keď chyba je hodený, budete presmerovaní na stránku ErrorStatus.htm.
Hoci môžete použiť predvolenú stránku chyba v hodnote atribút defaultRedirect v sekcii <customErrors>, môžete tiež určiť konkrétnu stránku na presmerovanie na základe chybový kód HTTP, ktorý je zvýšený. <error>Podradený prvok umožňuje túto možnosť. Napríklad:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Poznámka Stránka, ktorá je špecifikovaná v defaultRedirect časti <customErrors>je súbor .htm. SOM

Všimnite si, že <customErrors>oddiel zahŕňa režim atribút, ktorý je nastavený na. Režim atribút sa používa na kontrolu, ako nastane chyba presmerovanie. Napríklad, ak ste rozvojových aplikácie, pravdepodobne chcete vidieť skutočné ASP.NET chybové hlásenia a nechcú byť presmerovaný na viac užívateľsky-priateľské chybové stránka. Režim atribút obsahuje nasledujúce nastavenia: </customErrors></customErrors>
  • Na: neošetrené výnimky presmerovať užívateľa na stránke uvedené defaultRedirect . Tento režim sa používa hlavne pri výrobe.
  • Off: užívatelia dostávajú informácie o výnimke a nie redirectedto na stránke defaultRedirect . Tento režim sa používa hlavne vo vývoji.
  • RemoteOnly: len užívatelia, ktorí prístup na lokalitu na lokálnom počítači (podľa usinglocalhost) získať informácie o výnimke. Všetci ostatní používatelia presmerovaní na stránku defaultRedirect . Tento režim sa používa hlavne pre ladenie.

Riešenie problémov

V jeho predvolenú inštaláciu na Microsoft Windows 2000 a Microsoft Windows XP, beží ASP.NET Web aplikačnom kóde v pracovník proces. Totožnosť tento proces predvolené konto neprivilegovaného miestne nazýva ASPNET účet. V beta verziách ASP.net, identita spracovania bol systém, silný administratívny účet s mnohými privilégiami na stroji.

V jeho predvolenú inštaláciu v systéme Windows Server 2003 (IIS 6), beží ASP.NET Web aplikačnom kóde v pracovník proces. Totožnosť tento proces predvolené obmedzené konto NetworkService tzv.

Pre viac informácií o tejto zmene a ako to môže ovplyvniť spustený kód v tomto článku a ďalšie kód, ktorý môže byť potrebné ďalšie prístupové práva, nájdete na nasledovných webových lokalitách:
Verzia 1 zabezpečenie zmeny pre platformu Microsoft .NET Framework
http://msdn2.Microsoft.com/en-us/library/ms994923.aspx

Odkazy

Ďalšie informácie nájdete na nasledovných webových lokalitách spoločnosti Microsoft:
Výnimka správa v .NET

HttpServerUtility.ClearError metóda

MSDN .NET vývojové centrum

Domovská stránka spoločnosti Microsoft .NET

Vlastnosti

ID článku: 306355 - Posledná kontrola: 29. októbra 2013 - Revízia: 4.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Kľúčové slová: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 306355

Odošlite odozvu

 

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