Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

How To Create an ASP.NET HTTP Handler by Using Visual Basic .NET


View products that this article applies to.

This article was previously published under Q307997

↑ Back to the top


Summary

This step-by-step article demonstrates how to use Microsoft Visual Basic .NET to create a simple, custom HTTP handler. This article demonstrates how to create, deploy, and configure the handler.

Implement the Handler

  1. Start Microsoft Visual Studio .NET.
  2. Create a new Class Library project by using Visual Basic .NET, and then name the project MyHandler.
  3. Add a reference to the System.Web.dll assembly.
  4. Add the following code to import the System.Web namespace:
    Imports System.Web
    					
  5. Rename the class SyncHandler.vb, and then change the class definition to reflect this.
  6. Implement the IHttpHandler interface. Your class definition should appear as follows:
    Public Class SyncHandler
       Implements IHttpHandler
    					
  7. Implement the IsReusable property and the ProcessRequest method of the IHttpHandler interface. Because this is a synchronous handler, return False for the IsReusable property so that the handler is not pooled.
    Public ReadOnly Property IsReusable() As Boolean _
    Implements IHttpHandler.IsReusable
       Get
          Return False
       End Get
    End Property
    
    Public Sub ProcessRequest(ByVal context As HttpContext) _
    Implements IHttpHandler.ProcessRequest
       context.Response.Write("Hello from custom handler.")
    End Sub
    					
  8. Compile the project.

    Note: If you want your handler to have access to session data, then your class must implement the IRequiresSessionState interface in addition to IHttpHandler. IRequiresSessionState has no methods or properties. It merely designates that your handler uses session data.

Deploy the Handler

  1. Create a new directory named Handler under the C:\Inetpub\Wwwroot directory.
  2. Create a subdirectory named Bin in the newly created Handler directory. The resultant path is C:\Inetpub\Wwwroot\Handler\Bin.
  3. Copy MyHandler.dll from your project's Bin directory to the C:\Inetpub\Wwwroot\Handler\Bin directory.
  4. Follow these steps to mark the new Handler directory as a Web application:
    1. In Microsoft Windows 2000 and in Microsoft Windows XP, start Internet Services Manager. In Microsoft Windows Server 2003, start Internet Information Services (IIS) Manager.
    2. Right-click on the Handler directory, and then click Properties.
    3. On the Directory tab, click Create.
  5. Follow these steps to create an application mapping for the handler. For this handler, create a mapping to the Aspnet_isapi.dll file for the *.sync extension. Whenever a .sync file is requested, the request is routed to ASP.NET, and ASP.NET executes the code in the handler.
    1. Right-click on the Handler Web application, and then click Properties.
    2. On the Directory tab, click Configuration.
    3. Click Add to add a new mapping.
    4. In the Executable text box, type the following path:
      C:\WINNT\Microsoft.NET\Framework\<version#>\Aspnet_isapi.dll
    5. In the Extension text box, type .sync.
    6. In Windows 2000 and in Windows XP, make sure that the Check that file exists check box is cleared, and then click OK to close the Add/Edit Application Extension Mapping dialog box. In Windows Server 2003, make sure that the Verify that file exists check box is cleared, and then click OK to close the Add/Edit Application Extension Mapping dialog box.
    7. Click OK to close the Application Configuration and the Handler Properties dialog boxes.
  6. Close Internet Services Manager.

Configure the System

  1. In the C:\Inetpub\Wwwroot\Handler directory, create a new file named Web.config.
  2. Add the following code to Web.config:
    <configuration>
       <system.web>
          <httpHandlers>
             <add verb="*" path="*.sync" type="MyHandler.SyncHandler, MyHandler" />
          </httpHandlers>
       </system.web>
    </configuration>
    						
    In the verb="*" attribute, we instruct the handler to process a request that uses any verb (for example, POST, HEAD, GET, and so on). If you want this handler to process only the POST request, change this to verb="POST".

    In the path="*.sync" attribute, we instruct the handler to process any incoming requests for files with the .sync extension.

    In the type="MyHandler.SyncHander, MyHandler" attribute, we instruct the handler that processes the request to implement in the MyHandler.SyncHandler namespace, and this class resides in the MyHandler assembly.

Test the Module

To test a handler, a page does not need to exist in the file system. For example, request the Default.sync file in the Handler Web application (http://<ComputerName>/Handler/Default.sync). You should receive the following results:
Hello from custom handler.
				

↑ Back to the top


References

For additional information about HTTP handlers, click the article number below to view the article in the Microsoft Knowledge Base:
307985� INFO: ASP.NET HTTP Modules and HTTP Handlers Overview

↑ Back to the top


Keywords: KB307997, kbweb, kbhttpruntime, kbhttphandlers, kbhowtomaster, kbconfig

↑ Back to the top

Article Info
Article ID : 307997
Revision : 7
Created on : 7/15/2004
Published on : 7/15/2004
Exists online : False
Views : 568