Custom HttpModule Example

The following custom module simply returns a Web page message at the beginning of any HTTP request and another after the request has been processed. The Init function below registers event handlers for two HttpApplication events, BeginRequest and EndRequest. Each handler is written as a private method of the module. When the registered events are raised, ASP.NET calls the appropriate handler method, which writes a Web page and returns.

using System;
using System.Web; 
using System.Collections;

public class HelloWorldModule : IHttpModule {
    public String ModuleName { 
        get { return "HelloWorldModule"; } 
    }    
    
    // In the Init function, register for HttpApplication 
    // events by adding your handlers.
    public void Init(HttpApplication application) {
        application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
        application.EndRequest += (new EventHandler(this.Application_EndRequest));
    }
    
    // Your BeginRequest event handler.
    private void Application_BeginRequest(Object source, EventArgs e) {
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.Write("<h1><font color=red>HelloWorldModule: Beginning of Request</font></h1><hr>");
    }
    
    // Your EndRequest event handler.
    private void Application_EndRequest(Object source, EventArgs e) {
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.Write("<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>");
    }        
    
    public void Dispose() 
    {
    }
}

[VisualĀ Basic]
Imports System
Imports System.Web
Imports System.Collections

Public Class HelloWorldModule
    Implements IHttpModule

    Public ReadOnly Property ModuleName() As [String]
        Get
            Return "HelloWorldModule"
        End Get
    End Property

    ' In the Init function, register for HttpApplication 
    ' events by adding your handlers.
    Public Sub Init(ByVal application As HttpApplication) Implements IHttpModule.Init
        AddHandler application.BeginRequest, AddressOf Me.Application_BeginRequest
        AddHandler application.EndRequest, AddressOf Me.Application_EndRequest
    End Sub

    ' Your BeginRequest event handler.
    Private Sub Application_BeginRequest(ByVal [source] As [Object], ByVal e As EventArgs)
        Dim application As HttpApplication = CType([source], HttpApplication)
        Dim context As HttpContext = application.Context
        context.Response.Write("<h1><font color=red>HelloWorldModule: Beginning of Request</font></h1><hr>")
    End Sub

    ' Your EndRequest event handler.
    Private Sub Application_EndRequest(ByVal [source] As [Object], ByVal e As EventArgs)
        Dim application As HttpApplication = CType([source], HttpApplication)
        Dim context As HttpContext = application.Context
        context.Response.Write("<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>")
    End Sub

    Public Sub Dispose() Implements IHttpModule.Dispose
    End Sub
End Class

Register the module as follows:

<configuration>
    <system.web>
        <httpModules>
            <!-- <add name="HelloWorldModule" 
                      type="HelloWorldModule, HelloWorldModule" /> -->
        </httpModules>
    </system.web>
</configuration>

See Also

HTTP Runtime Support | HttpModules | Handling Public Events | Handling and Raising Events