Public Class ErrorHandlingModule Implements IHttpModule Public Sub Dispose() Implements IHttpModule.Dispose End Sub Private _ErrorMessage As String Public Property ErrorMessage() As String Get Return _ErrorMessage End Get Set(ByVal value As String) _ErrorMessage = value End Set End Property Public Sub Init(context As HttpApplication) Implements IHttpModule.Init 'Adding handler for Error ' AddHandler context.Error, _ AddressOf Me.Application_Error 'Adding Begin Request Handler ' AddHandler context.BeginRequest, _ AddressOf Me.Application_BeginRequest 'Adding End Request Handler ' AddHandler context.EndRequest, _ AddressOf Me.Application_EndRequest End Sub Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) Dim application As HttpApplication = DirectCast(sender, _ HttpApplication) Dim context As HttpContext = application.Context context.Response.Write("<h3><font color=red>" & _ "ErrorHandlingModule: Beginning of Request" & _ "</font></h3><hr/><br/><br/>") End Sub Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 'Handling Error: This is just an example ' 'In real time, you have to log your error in database ' 'as well as send email to admin ' Dim LastException As Exception = HttpContext.Current.Server.GetLastError If LastException IsNot Nothing Then If LastException.InnerException IsNot Nothing Then ErrorMessage = LastException.InnerException.Message End If End If 'Clear Error after handling it ' HttpContext.Current.Server.ClearError() End Sub Sub Application_EndRequest(ByVal sender As Object, ByVal e As EventArgs) Dim application As HttpApplication = DirectCast(sender, _ HttpApplication) Dim context As HttpContext = application.Context context.Response.Write(ErrorMessage + "<br/><br/><hr/><h3/><font color=red>" & _ "ErrorHandlingModule: End of Request</font></h3>") End Sub End Class
Steps:
1. Create a class “ErrorHandlingModule” in “App_Code” folder of your project
2. Implement “IHttpModule” in this class. When you press enter button at the end of “IHttpModule”, It will implement two methods “Dispose() and Init()”.
3. In Init(), I have added three handlers “Error, BeginRequest, EndRequest”.
4. To catch all requests and error, you have to subscribe those in “Init” and create methods in this class.
5. I have created three methods “Application_BeginRequest”, ”Application_Error”, ”Application_EndRequest”.
6. In “Application_Error” Method, just for example, I have assigned error message to “ErrorMessage” property. I have created this property just for that.
7. Now, just to see how it works, I have created one .aspx page and its Page_Load event, I have thrown exception as follows:
Public Class Home Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Throw New Exception("This is test ERROR") End Sub End Class
When you run this page, error will be caught by our ErrorHandlingModule and you can see the result as below. You can log any error in the database as well as you can send an email to admin.
No comments:
Post a Comment