Complete example using custom errors and write errors to the Event logWriting to the Windows 2000 Event Log is a powerful feature of the ASP.NET and .NET framework. For those individuals who work in a large company and want to make track application errors, writing to the event log is a must! There wasn't any complete demos actually showing from A - Z how this was setup for the novice/common developer like me. Most novice developers need to be spoon fed how things are done the first time, once they see a simple example, they'll understand how the process works! This example is my reference how to make a complete application from A - Z setup and fail to understand how it works. |
| Step 1First of all the steps I followed was to create a simple web called eventlog. I also created the application rootso the global.asax file would fire.
Step 2I opened the global web.config file and turned on custom errors. Path to this is c:winntmicrosoft.netframework.. There are 3 choices available currently On, Off and RemoteOnly. From attending the conference, the recommended was RemoteOnly. This means anyone not on the console of the machine will see a friendly error and not the real thing. For this example I chose On. You also could leave the global web.config file custom errors turned off and configure at application level's web.config Either way works just fine.
web.config -- this file is placed in the root of the eventlog application root. <configuration> <system.web> <customErrors mode="On" defaultRedirect="/eventlog/customerrorpage.aspx"> <error statusCode="404" redirect="/eventlog/404Page.aspx"/> <error statusCode="403" redirect="/eventlog/403page.aspx"/> </customErrors> </system.web> </configuration> Step 3The next few items are just to create sample pages to make the application complete. I created a web.config, global.asax, Default.aspx page, and three sample error pages. 404page.aspx, 403page.aspx and customerrorpage.aspx page.
Here are those pages code for all pages. Global.asax Page - This uses the Application_OnError event to capture stuff if an error happens <%@ Import Namespace="System" %> <%@ Import Namespace="System.Diagnostics" %> <script language="VB" runat=server>
Public Sub Application_OnError(Sender as Object, E as EventArgs) 'Captures the error and converts to a string dim LastError as Exception = Server.GetLastError() Dim ErrMessage as String = LastError.toString()
Dim LogName As String = "MyLog" Dim Message As String = "Url " & Request.Path & " Error: " & ErrMessage
' Create Event Log if It Doesn't Exist If (Not EventLog.SourceExists(LogName)) Then EventLog.CreateEventSource(LogName, LogName) End if
Dim Log as New EventLog Log.Source = LogName
'These are the five options that will display a different icon. 'The numbers are just to show the order. These aren't required Log.WriteEntry(Message, EventLogEntryType.Information, 1) ' Log.WriteEntry(Message, EventLogEntryType.Error, 2) ' Log.WriteEntry(Message, EventLogEntryType.Warning, 3) ' Log.WriteEntry(Message, EventLogEntryType.SuccessAudit, 4) ' Log.WriteEntry(Message, EventLogEntryType.FailureAudit, 5) End Sub </script> Default.aspx page <% @Language="VB" %> <script language="VB" runat=server> Sub Page_Load(Sender As Object, E As EventArgs) If IsPostBack Then 'Declare all variables dim x as integer dim y as integer dim z as integer
'set x and y to values to be divided by zero x = 1 y = 0
'perform the division by zero to raise the error z = x/y End Sub </script> <html> <head> </head> <body> <form method="post" action="eventlog.aspx" name="form1" id="number">
<asp:Button id="abutton" type="submit" text="Click Me to generate an error" runat="server" /> </form> </body> </html> Customerrorpage.aspx <html> <head></head> <body> <h1>custom error page</h1> </body> </html>
404page.aspx --Capture all 404(Not Found pages) <html> <head></head> <body> <h1>404 error page</h1> </body> </html>
403page.aspx --Capture all 403(Restricted pages) <html> <head></head> <body> <h1>403 error page</h1> </body> </html> Step 4After all webs are created, web.config files in place. It was time to test out the application to see if it works. Type in http://localhost/eventlog/default.aspx file, this will display a button. Click it and see if this actually creates the log and writes the information to the event log. Actually only the custom error page will be displayed, the eventlog.aspx page will error and be transfered to the customerrorpage.aspx. The URL will be something like this.
http://localhost/eventlog/customerrorpage.aspx?aspxerrorpath=/eventlog/eventlog.aspx The page will appear like this Step 5. Verify the log was created and entry was placed in that log. The example shows a Critical error message. You also can show informational or yellow warning messages. For this example we showed all 5 possible entries
Open the Error and view the message. If the customerror wasn't turned on, this error would have shown up in the browser instead of the eventlog. Not pretty!!
Thats it! This was a high-level example with examples but hopefully helps in understanding how a sample application and using the new Error-handling features of ASP.NET... Enjoy!!
Parameters for WriteEntry Method- source
- The source by which the application is registered on the specified computer.
- message
- The string to write to the event log.
- type
- One of the EventLogEntryType values.
- eventID
- The application-specific identifier for the event.
- category
- The application-specific subcategory associated with the message.
- rawData
- An array of bytes that holds the binary data associated with the entry.
Five possible types of Event log messages. These show the different types of icons | Member Name | Description |
|---|
| Error | An error event. This indicates a significant problem the user should know about; usually a loss of functionality or data. | | FailureAudit | A failure audit event. This indicates a security event that occurs when an audited access attempt fails; for example, a failed attempt to open a file. | | Information | An information event. This indicates a significant, successful operation. | | SuccessAudit | A success audit event. This indicates a security event that occurs when an audited access attempt is successful; for example, logging on successfully. | | Warning | A warning event. This indicates a problem that is not immediately significant, but that may signify conditions that could cause future problems. | |
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
More ASP.NET Articles More By aspfree developerWorks - FREE Tools! | As businesses grow increasingly dependent upon Web applications to provide services to customers, employees and partners, these complex applications become more difficult to secure. Although traditional security solutions protect Internet infrastructure layers, they do not guard against HTTP and HTML attacks. Many organizations that conduct security testing still deploy applications that allow attackers to manipulate their logic and wreak havoc on their business. To mitigate this risk, development and delivery teams must address Web application security throughout the lifecycle, addressing the many layers detailed in this paper. FREE! Go There Now!
| | | | Effective governance for lean development isn’t about command and control. Instead, the focus is on enabling the right behaviors and practices through collaborative and supportive techniques. Hear from Scott Ambler on how it is far more effective to motivate people to do the right thing than it is to force them to do so. Learn how to form a lightweight, collaboration-based framework that reflects the realities of modern IT organizations. FREE! Go There Now!
| | | | Join us for this web seminar to learn how you can defend your web applications from attack. Learn about the 3 most common web application attacks, including how they occur and what can be done to prevent them. We’ll also discuss manual versus automated approaches for scanning and identifying web application vulnerabilities and how IBM Rational AppScan, an automated vulnerability scanner, can help you automate more of what you are doing manually today. FREE! Go There Now!
| | | | Join this webcast to discover the key requirements for successful change and release management. Learn how to extend your .NET environment to improve productivity and collaboration, and address core problems afflicting team development. In this webcast, we’ll review typical challenges faced by customers and how to resolve them with the IBM Rational Change and Release Management solution, including Rational ClearCase, Rational ClearQuest and Rational Build Forge. Replay is available for 9 months. FREE! Go There Now!
| | | | Get a free trial download of IBM Lotus Forms V3.0 (formerly Workplace Forms), which provides a zero-footprint eForms solution to help you automate and move forms-based business processes off the desktop and onto the Web. With Lotus Forms, you can extend applications beyond the firewall by creating a single electronic form document ready for use in both thick and Web 2.0 thin client format. FREE! Go There Now!
| | | | Get a free trial download of the latest version of IBM Rational Functional Tester V7.0.1. Rational Functional Tester is an automated functional and regression testing solution for QA teams concerned with the quality of their Java, Microsoft Visual Studio .NET, and Web-based applications. FREE! Go There Now!
| | | | Visit IBM developerWorks to try the IBM SOA Sandbox for process. The SOA Sandbox for process focuses on providing a trial environment with the necessary tooling and components required to gain a better understanding of business processes and how to best improve existing business processes to derive value quickly. FREE! Go There Now!
| | | | Join this Rational Talks to You teleconference, to hear how Enterprise Generation Language (EGL) eliminates the need for tedious and error-prone low level coding, so developers can focus on business requirements. EGL extends the Rational software development platform with a simplified programming language that enables developers who have little or no experience with Java, Web technologies or Service Oriented Architecture, to create enterprise-class applications and services quickly and easily. It also allows developers who may have little or no mainframe programming experience to quickly create traditional mainframe components. FREE! Go There Now!
| | | | User communities play an important role in communication and collaboration around products, solutions and other areas of special interest to members. Successful communities are able to provide the right mix of content and services to deliver a value proposition that resonates with each audience. Join Tom Inman, VP of Marketing for Information and Platform Solutions as he introduces the new LeverageINFORMATION community. During this webcast, learn about the value provided by the community and how customers and partners derive value from the community in addressing their own technical and business challenges. FREE! Go There Now!
| | | | The unprecedented scope of a service-oriented architecture (SOA) initiative brings to the forefront a number of management and governance issues that were sidestepped in the past. The key to a successful SOA implementation is managing and governing activities throughout the entire SOA delivery lifecycle by ensuring that services conform to the needs of all of the business’s stakeholders. Learn how service lifecycle management allows the business to ensure that the process by which services are defined, created, tested, deployed, optimized and retired is manageable, repeatable and auditable. FREE! Go There Now!
| | | | All FREE IBM® developerWorks Tools! | |