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