HttpModules intercept each request to Web application resources. The class that is to act as HttpModule must implement an interface called IHttpModule. Again, the interface is simple:
[Visual Basic]
Sub Init(ByVal context As HttpApplication)
Sub Dispose()
[C#]
void Init(HttpApplication context);
void Dispose();
To implement the IHttpModule interface, you need only write two methods:
Init and
Dispose. The
Init method receives an HttpApplication parameter. You can alter the request either before or after the handler for that request executes by trapping the HttpApplication
BeginRequest and
EndRequest events. You write event handlers for these events in the
Init method. The Dispose method lets you clean up any unmanaged resources.
To get started, just as with the HttpHandler example, create an empty project and add a class to it. Add a reference to the System.Web assembly and add the Imports statement in the new class. To implement IHttpHandler interface, use the
AddHandler statement and write methods to handle the HttpApplication's
BeginRequest and
EndRequest events, for example:
Imports System.Web
Public Class TweakRequestModule
Implements IHttpModule
Public Sub Init(ByVal app As HttpApplication) _
Implements IHttpModule.Init
AddHandler app.BeginRequest, _
AddressOf MyBeginRequest
AddHandler app.EndRequest, _
AddressOf MyEndRequest
End Sub
Public Sub Dispose() Implements IHttpModule.Dispose
' add clean-up code here if required
End Sub
Public Sub MyBeginRequest(ByVal s As Object, _
ByVal e As EventArgs)
Dim app As HttpApplication
app = CType(s, HttpApplication)
app.Response.Write _
("<h4>Request Begins Here...</h4>")
End Sub
Public Sub MyEndRequest(ByVal s As Object, _
ByVal e As EventArgs)
Dim app As HttpApplication
app = CType(s, HttpApplication)
app.Response.Write _
("<h4>Request Ends Here...</h4>")
End Sub
End Class
The code attaches event handlers to the HttpApplication instance using the
AddHandler statement. The event-handlers themselves (MyBeginRequest and MyEndRequest) perform the actual work to write HTML messages.
Configuring an HttpModule in Web.config
You must modify the configuration settings in
web.config to let ASP.NET know about the HttpModule. This time, you don't need to create a new Web project to test the code; instead, add a new Web form in the Web application you created for the HttpHandler sample project and then modify the
web.config file. The following fragment shows the
<httpModules> section.
<httpModules>
<add
type="MyHttpModule.TweakRequestModule,MyHttpModule"
name="MyHttpModule" />
</httpModules>
As before, you need to specify the type and assembly details of the module. After saving the configuration changes, run the Web Form. You'll see the output in
Figure 4.
 |
|
Bipin Joshi is a Microsoft MVP, software developer and author from Mumbai, India. With a strong background in VB, ASP, and COM, he now works on .NET technologies. He coauthored "Professional ADO.NET" and "Professional XML for .NET Developers" for Wrox Press. You can reach him at his Web site: www.DotNetBips.com.
Email Author
|
|
|