How to create custom error reporting pages in ASP.NET by using Visual C# .NET
This article was previously published under Q306355 On This PageSUMMARY This article describes how to use Visual C# .NET code to
trap and respond to errors when they occur in ASP.NET. ASP.NET has improved the
error handling options from traditional Microsoft Active Server Pages (ASP). In
ASP.NET, you can handle errors at several different levels in your
applications. New features in ASP.NETASP.NET offers several advances in how you can handle and respond to errors. In traditional ASP, you handle errors with "On Error Resume Next" (or try-catch blocks in JScript). Alternately, if you are running Microsoft Internet Information Services (IIS) 5.0, you use the ASPError object to create a custom error reporting page. However, these approaches have their limitations.ASP.NET provides several levels at which you can handle and respond to errors that may occur when you run an ASP.NET application. ASP.NET provides three main methods that allow you to trap and respond to errors when they occur: Page_Error, Application_Error, and the application configuration file (Web.config). This article demonstrates how to use these new features in your ASP.NET application. Although this article describes how to provide custom error pages and general error reporting as it relates directly to ASP.NET, this article does not describe other error handling approaches such as the try-catch-finally block and the Common Language Runtime (CLR) exception system. How to use the Page_Error methodThe Page_Error event handler provides a way to trap errors that occur at the page level. You can simply display error information (as the sample code to follow does), or you can log the event or perform some other action.Note This example displays detailed error information in the browser only for demonstration purposes. You will want to be cautious when displaying detailed information to the end user of the application, especially when the application is running on the Internet. A more appropriate action would be to display a message to the user notifying them that an error has occurred, and then actually logging the specific error details in the event log. This example throws a null exception, which forces an error to occur in the Page_Load event handler. Follow these steps to create the initial page that will demonstrate using the Page_Error event handler.
In addition, you should also take note of the Inherits attribute in the @ Page directive. If Inherits is set, you must build the project before you browse to the page. If you do not build the project first, you receive the following error message: 'Project.PageEvent' is not a valid type
How to use the Application_Error methodSimilar to the Page_Error event handler, you can use the Application_Error event handler to trap errors that occur in your application. Due to the event's application-wide scope, you can log of application error information or handle other application-level errors that may occur.The sample to follow is based on the preceding Page_Error code sample and would be fired if the error in Page_Load was not trapped in the Page_Error event handler. The Application_Error event handler is specified in the Global.asax file of your application. For simplicity, the steps in this section create a new page in which to throw the exception, trap the error in the Application_Error event handler of the Global.asax file, and write the error to the event log. The following steps demonstrate how to use the Application_Error method:
How to use the Web.config fileIf you do not call Server.ClearError or trap the error in the Page_Error or Application_Error event handler, the error is handled based on the settings in the <customErrors> section of the Web.config file. In the <customErrors> section, you can specify a redirect page as a default error page (defaultRedirect) or specify to a particular page based on the HTTP error code that is raised. You can use this method to customize the error message that the user receives.If an error occurs that is not trapped at any of the previous levels in your application, this custom page is displayed. This section demonstrates how to modify the Global.asax file so that Server.ClearError is never called. As a result, the error is handled in the Web.config file as the last point to trap the error.
Note The page that is specified in defaultRedirect of the <customErrors> section is an .htm file. INotice that the <customErrors> section includes a mode attribute that is set to On. The mode attribute is used to control how the error redirection occurs. For example, if you are developing the application, you most likely want to see the actual ASP.NET error messages and do not want to be redirected to the more user-friendly error page. The mode attribute includes the following settings:
TroubleshootingIn its default installation on Microsoft Windows 2000 and on Microsoft Windows XP, ASP.NET runs Web application code in a worker process. The identity of this process defaults to an unprivileged local account called the ASPNET account. In beta releases of ASP.NET, the process identity was System, a powerful administrative account with many privileges on the machine.In its default installation on Windows Server 2003 (IIS 6), ASP.NET runs Web application code in a worker process. The identity of this process defaults to a limited account called NetworkService. For more information about this change and how it can effect running the code in this article, and other other code that might need additional access rights, visit the following Web sites: Version
1 Security Changes for the Microsoft .NET Framework http://msdn2.microsoft.com/en-us/library/ms994923.aspx (http://msdn2.microsoft.com/en-us/library/ms994923.aspx) REFERENCES For more information, visit the following Microsoft Web
sites: Exception Management in .NET http://msdn2.microsoft.com/en-us/library/ms954599.aspx (http://msdn2.microsoft.com/en-us/library/ms954599.aspx) HttpServerUtility.ClearError Method http://msdn2.microsoft.com/en-us/library/system.web.httpserverutility.clearerror(vs.71).aspx (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebHttpServerUtilityClassClearErrorTopic.asp)MSDN .NET Development Center http://msdn2.microsoft.com/en-us/netframework/default.aspx (http://msdn2.microsoft.com/en-us/netframework/default.aspx)Microsoft .NET Home Page http://www.microsoft.com/net/ (http://www.microsoft.com/net/) APPLIES TO
| Article Translations
|

Back to the top
