Create a new Class Library project by using Visual Basic .NET, and then name the project MyHandler.
Add a reference to the System.Web.dll assembly.
Add the following code to import the System.Web namespace:
Rename the class SyncHandler.vb, and then change the class definition to reflect this.
Implement the IHttpHandler interface. Your class definition should appear as follows:
Public Class SyncHandler Implements IHttpHandler
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 GetEnd PropertyPublic Sub ProcessRequest(ByVal context As HttpContext) _Implements IHttpHandler.ProcessRequest context.Response.Write("Hello from custom handler.")End Sub
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.
Create a new directory named Handler under the C:\Inetpub\Wwwroot directory.
Create a subdirectory named Bin in the newly created Handler directory. The resultant path is C:\Inetpub\Wwwroot\Handler\Bin.
Copy MyHandler.dll from your project's Bin directory to the C:\Inetpub\Wwwroot\Handler\Bin directory.
Follow these steps to mark the new Handler directory as a Web application:
In Microsoft Windows 2000 and in Microsoft Windows XP, start Internet Services Manager. In Microsoft Windows Server 2003, start Internet Information Services (IIS) Manager.
Right-click on the Handler directory, and then click Properties.
On the Directory tab, click Create.
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.
Right-click on the Handler Web application, and then click Properties.
On the Directory tab, click Configuration.
Click Add to add a new mapping.
In the Executable text box, type the following path:
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.
Click OK to close the Application Configuration and the Handler Properties dialog boxes.
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.
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: