Jak vytvořit vlastní chybách stránek v technologii ASP.NET pomocí aplikace Visual C# .NET

Překlady článku Překlady článku
ID článku: 306355 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje způsob použití kódu Visual C# .NET soutisk a reagovat na chyby při jejich výskytu v technologii ASP.NET. Technologie ASP.NET obsahuje vylepšené možnosti z tradiční Microsoft stránek ASP (Active Server) pro zpracování chyb. V technologii ASP.NET můžete zpracovávat chyby na několika různých úrovních ve vašich aplikacích.

Nové funkce technologie ASP.NET

Technologie ASP.NET nabízí několik záloh v jak zpracovat a reagovat na chyby. V tradičním prostředí ASP při zpracování chyb "On Error Resume Next" (nebo bloky try-catch v jazyce JScript). Také pokud používáte Internetová informační služba (IIS) 5.0, použijete objekt ASPError vytvořit vlastní chybovou stránku pro hlášení. Však tyto přístupy mají své omezení.

Technologie ASP.NET poskytuje několik úrovní, v nichž lze zpracovat a reagovat na chyby, které mohou nastat při spuštění aplikace ASP.NET. Technologie ASP.NET poskytuje tři hlavní metody, které umožňují zachycení a reagovat na chyby při jejich výskytu: Page_ErrorApplication_Errora konfiguračního souboru aplikace (Web.config).

Tento článek ukazuje, jak použít tyto nové funkce v aplikaci technologie ASP.NET. Přestože tento článek popisuje, jak poskytnout vlastní chybové stránky a obecná chybová hlášení se týká přímo do technologie ASP.NET, tento článek nepopisuje jiné přístupy, jako jsou konstrukce try-catch-finally blok a systém výjimek společný jazyk Runtime (CLR) pro zpracování chyb.

Použití Page_Error metody

Obslužná rutina Page_Error událostí umožňuje provádět soutisk chyby na úrovni stránky. Jednoduše můžete zobrazit informace o chybě (stejně jako ukázkový kód dodržovat), nebo můžete protokolovat událost nebo provádět jiné činnosti.

Poznámka: Tento příklad zobrazuje podrobné informace o chybě v prohlížeči pouze pro demonstrační účely. Budete chtít být opatrní při zobrazení podrobných informací koncovému uživateli aplikace, zejména pokud je aplikace spuštěna v síti Internet. By bylo vhodnější akce zobrazit zprávu uživateli upozornění, že došlo k chybě a skutečně protokolování podrobnosti o chybě do protokolu událostí.

Tento příklad vyvolá výjimka null, což způsobí chybu v obslužné rutině události Page_Load . Následujícím postupem vytvořit úvodní stránky, které ukazují použití Page_Error obslužnou rutinu události.
  1. Postupujte podle těchto kroků přidejte do nového souboru s názvem PageEvent.aspxto projektu:
    1. Otevřete aplikaci Microsoft Visual Studio .NET.
    2. V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel projektu, přejděte na Přidata potom klepněte na tlačítko Přidat webový formulář.
    3. Do pole název zadejte PageEvent.aspxa potom klepněte na tlačítko Otevřít.
  2. PageEvent.aspx přidejte následující kód:
    <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: V této ukázce kódu není explicitně nastaven atribut AutoEventWireup . V takovém případě není explicitně assigna hodnotu atributu AutoEventWireup je použit výchozí hodnotu true . Pokud používáte Visual Studio .NET k vývoji yourapplications, kód šablony webového formuláře explicitně nastaví hodnotu atributu AutoEventWireup na hodnotu false. Existuje důležitý rozdíl mezi thatASP.NET používá výchozí hodnoty a výchozí hodnotu, na kterou codeassigns šablony sady Visual Studio .NET k tomuto atributu. Pokud hodnota atributu AutoEventWireup nastavena na hodnotu false, obslužné rutiny událostí, které jsou deklarovány v.Notfire stránky ASPX. To může být zavádějící, pokud si nejste jisti, o thisfunctionality.
  3. V nabídce soubor klepněte na tlačítko Uložit PageEvent.aspx.
  4. Klepněte pravým tlačítkem myši na stránku a potom klepněte na příkaz Zobrazit v prohlížeči pro spuštění stránky. Všimněte si, že se chyba a reportedaccording specifikace kódu.
Poznámka: Můžete si všimnout, že kód vydává volání Server.ClearError. To zabrání pokračovat v obslužné rutině Application_Error došlo k chybě.

Kromě toho by také si všimněte atribut Inherits v direktivě @ Page . Pokud Inherits musí sestavení projektu před přejděte na stránku. Není sestavení projektu poprvé, zobrazí se následující chybová zpráva:
'Project.PageEvent' není platný typ.

Použití metody Application_Error

Podobně jako Page_Error obslužnou rutinu události, můžete použít Application_Error obslužná rutina události pro zachycení chyby v aplikaci. Z oboru celou aplikaci k události můžete protokolování aplikace informací o chybách nebo zpracovávat další chyby úroveň aplikace, které mohou nastat.

Postupujte vzorek vychází z předchozí ukázka kódu Page_Error a bude aktivována, pokud nebyla chyba v Page_Load chycených do Page_Error obslužnou rutinu události. Application_Error obslužná rutina události je určen v souboru Global.asax aplikace. Pro jednoduchost kroky v této části vytvořit novou stránku, do které chcete vyvolat výjimku, zachycení chyby v obslužné rutině Application_Error v souboru Global.asax a Zapsat chyby do protokolu událostí. Následující kroky ukazují, jak lze pomocí metody Application_Error :
  1. Přidání nového souboru s názvem AppEvent.aspx do yourproject.
  2. AppEvent.aspx přidejte následující kód:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Poznámka: Informace uvedené v části "Page_Error" o atributu AutoEventWireup platí také pro ukázkový kód v tomto kroku. Viz theinformation v části "Page_Error" Další podrobnosti.
  3. V nabídce soubor klepněte na tlačítko Uložit AppEvent.aspx.
  4. Obslužná rutina Application_Error přidáte do souboru Global.asax pro zachycení chyby youthrow, že v obslužné rutině události Page_Load stránky AppEvent.aspx. Všimněte si, že musíte addanother pomocí příkazu pro obor názvů System.Diagnostics na Global.asax použití protokolu událostí.

    Do soubor Global.asax přidejte kód thefollowing:
    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 soubor Global.asax.
  6. V nabídce sestavení v sadě Visual Studio .NET, klepněte na tlačítko Sestavit.
  7. Klepněte pravým tlačítkem myši na stránku a potom klepněte na příkaz Zobrazit v prohlížeči. V tomto případě bude prázdné stránky, však musí být noticethat, který byl přidán nový záznam v protokolu událostí. V tomto příkladu přidá záznam do protokolu aplikací, které je přístupné z prohlížeče událostí. Po loggingthe chybě můžete přesměrovat uživatele na jinou stránku další uživatel friendlyerror nebo v případě potřeby provést některé další akce.

Použití souboru Web.config

Pokud nezavoláte Server.ClearError nebo depeše chyba Page_Error nebo Application_Error obslužná rutina události, chyby je zpracován na základě nastavení v oddílu <customErrors>souboru Web.config. V sekci <customErrors>můžete určit přesměrování stránky jako výchozí chybovou stránku (defaultRedirect) nebo určit konkrétní stránku založenou na kód chyby protokolu HTTP, která je vyvolána. Tímto způsobem můžete přizpůsobit, obdrží uživatel chybovou zprávu.

Pokud dojde k chybě, která není zachycena na všech předchozích úrovních ve vaší aplikaci, zobrazí se tento vlastní stránku. Tento oddíl ukazuje, jak upravit soubor Global.asax, aby nikdy nazývá Server.ClearError . V důsledku chyby zpracování v souboru Web.config jako poslední bod k zachycení chyby. </customErrors></customErrors>
  1. Otevřete soubor Global.asax z previousexample.
  2. Zakomentujte řádek Server.ClearError zajistit, aby chyba povrchy v Web.configfile.
  3. Uložte změny Global.asax. Váš kód by měl nowappear podobná následující:
    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. Následující kód přidejte <customErrors>sekce Chcete-li přesměrovat uživatele na vlastní stránku:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Poznámka: Cesta k souboru v atributu defaultRedirect je třeba upravit tak, aby odkazuje na odpovídající názvy webových serverů andapplication.
  5. Vzhledem k tomu, že chyby, které se provede soutisk na této úrovni jsou sentto výchozí chybovou stránku, je nutné vytvořit stránku s názvem ErrorStatus.htm.Keep na paměti, že tuto metodu používáte řídit, co je předkládán theuser, tak tento příklad používá stránku htm pro chybovou stránku. Přidáte followingcode 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. Testování kódu, ukládání souborů, sestavení projektu, andthen v prohlížeči zobrazit AppEvent.aspx. Všimněte si, že když je vyvolána chyba, budete přesměrováni na stránku ErrorStatus.htm.
Ačkoli lze odkazovat v hodnotě atributu defaultRedirect v oddílu <customErrors>výchozí chybovou stránku, můžete také určit konkrétní stránku pro přesměrování založených na kód chyby protokolu HTTP, která je vyvolána. Tato možnost umožňuje podřízený prvek <error>. Pří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 určená v defaultRedirect sekce <customErrors>je soubor s příponou HTM. I

Všimněte si, že <customErrors>část obsahuje atribut režimu , který je nastaven na hodnotu On. Atribut mode slouží k řízení, jak dojde k přesměrování chyb. Například pokud vyvíjíte aplikaci, pravděpodobně chcete zobrazit vlastní chybové zprávy technologie ASP.NET a nechcete, aby přesměrováni na více uživatelsky přívětivou chybovou stránku. Atribut mode obsahuje následující nastavení: </customErrors></customErrors>
  • Na: neošetřené výjimky přesměrování uživatele na stránce určené defaultRedirect . Tento režim se používá hlavně při výrobě.
  • Vypnutí: uživatelé přijímat informace o výjimce a jsou stránky defaultRedirect není redirectedto. Tento režim se používá hlavně ve vývoji.
  • RemoteOnly: pouze uživatelé s přístupem web v místním počítači (podle usinglocalhost) se zobrazí informace o výjimce. Všichni ostatní uživatelé přesměrováni na stránku defaultRedirect . Tento režim se používá hlavně pro ladění.

Poradce při potížích

V jeho výchozí instalace v systému Microsoft Windows 2000 a Microsoft Windows XP nastavení technologie ASP.NET spuštěna v pracovním procesu kódu webové aplikace. Neoprávnění místního účtu nazvaného účet ASPNET výchozí identitu tohoto procesu. V beta verzích technologie ASP.NET identitu procesu byl systém výkonné správní účet s mnoha oprávněními v počítači.

V jeho výchozí instalace v systému Windows Server 2003 (IIS 6) nastavení technologie ASP.NET spuštěna v pracovním procesu kódu webové aplikace. Omezený účet NetworkService nazývá výchozí identitu tohoto procesu.

Další informace o této změně a jak mohou provést spuštění kódu v tomto článku a další kód, který může potřebovat další přístupová práva naleznete na následujících webech:
Verze 1 změny zabezpečení pro rozhraní.NET Framework společnosti Microsoft
http://msdn2.microsoft.com/en-us/library/ms994923.aspx

Odkazy

Další informace naleznete na následujících webech společnosti Microsoft:
Správa výjimek v .NET

Metody HttpServerUtility.ClearError

MSDN .NET Development Center

Domovská stránka Microsoft .NET

Vlastnosti

ID článku: 306355 - Poslední aktualizace: 29. října 2013 - Revize: 8.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Klíčová slova: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtcs
Strojově přeložený článek
DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.
Projděte si také anglickou verzi článku: 306355

Dejte nám zpětnou vazbu

 

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