How To Create an ASP.NET HTTP Module Using Visual Basic .NET
IMPORTANT: This article assumes that you are familiar with the following topic:
IN THIS TASK
back to the top
Implement the Module
- In Visual Studio .NET, create a new Visual Basic .NET Class Library project named MyModule.
- Set a reference to the System.Web.dll assembly.
- Import the System.Web namespace as follows:
- Implement the IHttpModule interface. Your class definition should appear as follows:
Public Class SyncModule Implements IHttpModule
- Decide to which events you will subscribe. The following list outlines the available events from the HttpApplication object to which you can subscribe:
- AcquireRequestState: Call this event to allow the module to acquire or create the state (for example, session) for the request.
- AuthenticateRequest: Call this event when a security module needs to authenticate the user before it processes the request.
- AuthorizeRequest: Call this event by a security module when the request needs to be authorized. Call this event after authentication.
- BeginRequest: Call this event to notify a module that new request is beginning.
- Disposed: Call this event to notify the module that the application is ending for some reason. Allows the module to perform internal cleanup.
- EndRequest: Call this event to notify the module that the request is ending.
- Error: Call this event to notify the module of an error that occurs during request processing.
- PostRequestHandlerExecute: Call this event to notify the module that the handler has finished processing the request.
- PreRequestHandlerExecute: Call this event to notify the module that the handler for the request is about to be called.
- PreSendRequestContent: Call this event to notify the module that content is about to be sent to the client.
- PreSendRequestHeaders: Call this event to notify the module that the HTTP headers are about to be sent to the client.
- ReleaseRequestState: Call this event to allow the module to release state because the handler has finished processing the request.
- ResolveRequestCache: Call this event after authentication. Caching modules use this event to determine if the request should be processed by its cache or if a handler should process the request.
- UpdateRequestCache: Call this event after a response from the handler. Caching modules should update their cache with the response.
- Implement the Init and Dispose methods of the IHttpModule interface as follows:
Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init AddHandler app.BeginRequest, AddressOf Me.OnBeginRequestEnd SubPublic Sub Dispose() Implements IHttpModule.DisposeEnd Sub
- Create a delegate for an event as follows:
Public Delegate Sub MyEventHandler(ByVal s As Object, ByVal e As EventArgs)
- Define a public local variable of the type MyEventHandler to hold a reference to the event:
Public Event MyEvent As MyEventHandler
- Create the OnBeginRequest method, which hooks up to the BeginRequest event of the HttpApplication object:
Public Sub OnBeginRequest(ByVal s As Object, ByVal e As EventArgs) Dim app As HttpApplication = CType(s, HttpApplication) app.Context.Response.Write("Hello from OnBeginRequest in custom module.<br>") RaiseEvent MyEvent(Me, Nothing)End Sub
- Compile the project.
Deploy the Module
- Create a new directory under C:\Inetpub\Wwwroot named Module.
- Create a subdirectory named Bin in the newly created Module directory. The resultant path is C:\Inetpub\Wwwroot\Module\Bin.
- Copy MyModule.dll from your project's Bin\Debug directory to the C:\Inetpub\Wwwroot\Module\Bin directory.
- Follow these steps to mark the new Module directory as a Web application:
- Open Internet Services Manager.
- Right-click the Module directory, and then click Properties.
- On the Directory tab, click Create.
- Click OK to close the Module Properties dialog box.
Configure the System
- In the C:\Inetpub\Wwwroot\Module directory, create a new file named Web.config.
- Paste the following text into Web.config:
<configuration> <system.web> <httpModules> <add name="MyModule" type="MyModule.SyncModule, MyModule" /> </httpModules> </system.web></configuration>
Test the Module
- In the C:\Inetpub\Wwwroot\Module directory, create a new .aspx file named Test.aspx.
- Paste the following text into Test.aspx:
<%@Page Language="VB"%><% Response.Write("Hello from Test.aspx.<br>") %>
- In the C:\Inetpub\Wwwroot\Module directory, create a Global.asax file.
- Paste the following code in Global.asax:
<%@ Import Namespace="MyModule" %><script language="VB" runat=server >Public Sub MyModule_OnMyEvent(src As Object, e As EventArgs) Context.Response.Write("Hello from MyModule_OnMyEvent called in Global.asax.<br>")End Sub</script>
- Request the Test.aspx page. You should see the following lines of text:
Hello from OnBeginRequest in custom module.Hello from MyModule_OnMyEvent called in Global.asax.Hello from Test.aspx.
Article ID: 308000 - Last Review: 07/15/2004 15:02:38 - Revision: 3.4
- kbconfig kbhowtomaster kbhttpmodule kbhttpruntime kbweb KB308000