IHttpHandlerFactory.GetHandler Method (HttpContext, String, String, String)
Returns an instance of a class that implements the IHttpHandler interface.
Assembly: System.Web (in System.Web.dll)
Function GetHandler ( context As HttpContext, requestType As String, url As String, pathTranslated As String ) As IHttpHandler
Parameters
- context
-
Type:
System.Web.HttpContext
An instance of the HttpContext class that provides references to intrinsic server objects (for example, Request, Response, Session, and Server) used to service HTTP requests.
- requestType
-
Type:
System.String
The HTTP data transfer method (GET or POST) that the client uses.
- url
-
Type:
System.String
The RawUrl of the requested resource.
- pathTranslated
-
Type:
System.String
The PhysicalApplicationPath to the requested resource.
The following code example demonstrates how to create custom handler objects in response to a client request. The example has two parts:
A handler factory class.
A Web.config file excerpt.
The first part of the example shows how to create custom handler objects in response to a client request for a page named either abc.aspx or xyz.aspx. The handler factory class named hwf creates the appropriate handler object depending on the page requested.
' Name this Visual Basic file HandlerFactoryTest.vb and compile it with ' the command line: vbc /t:Library /r:System.Web.dll HandlerFactoryTest.vb. ' Copy HandlerFactoryTest.dll to your \bin directory. Imports System Imports System.Web Namespace test ' Factory class that creates a handler object based on a request ' for either abc.aspx or xyz.aspx as specified in the Web.config file. Public Class MyFactory Implements IHttpHandlerFactory <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Overridable Function GetHandler(context As HttpContext, _ requestType As String, url As String, pathTranslated As String) _ As IHttpHandler _ Implements IHttpHandlerFactory.GetHandler Dim fname As String = url.Substring(url.LastIndexOf("/"c) + 1) Dim cname As String = fname.Substring(0, fname.IndexOf("."c)) Dim className As String = "test." & cname Dim h As Object = Nothing Try ' to create the handler object. ' Create by calling class abc or class xyz. h = Activator.CreateInstance(Type.GetType(className)) Catch e As Exception Throw New HttpException("Factory couldn't create instance " & _ "of type " & className, e) End Try Return CType(h, IHttpHandler) End Function ' This is a must override method. Public Overridable Sub ReleaseHandler(handler As IHttpHandler) _ Implements IHttpHandlerFactory.ReleaseHandler End Sub End Class ' Class definition for abc.aspx handler. Public Class abc Implements IHttpHandler Public Overridable Sub ProcessRequest(context As HttpContext) _ Implements IHttpHandler.ProcessRequest context.Response.Write("<html><body>") context.Response.Write("<p>ABC Handler</p>" & _ Microsoft.VisualBasic.ControlChars.CrLf) context.Response.Write("</body></html>") End Sub Public Overridable ReadOnly Property IsReusable() As Boolean _ Implements IHttpHandler.IsReusable Get Return True End Get End Property End Class ' Class definition for xyz.aspx handler. Public Class xyz Implements IHttpHandler Public Overridable Sub ProcessRequest(context As HttpContext) _ Implements IHttpHandler.ProcessRequest context.Response.Write("<html><body>") context.Response.Write("<p>XYZ Handler</p>" & _ Microsoft.VisualBasic.ControlChars.CrLf) context.Response.Write("</body></html>") End Sub Public Overridable ReadOnly Property IsReusable() As Boolean _ Implements IHttpHandler.IsReusable Get Return True End Get End Property End Class End Namespace '______________________________________________________________ ' 'To use the handler factory, use the following lines in a 'Web.config file. (be sure to remove the comment markers) ' '<configuration> ' <system.web> ' <httpHandlers> ' <add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" /> ' <add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" /> ' </httpHandlers> ' </system.web> '</configuration>
The second part of the example shows a Web.config file excerpt. To use the above handler factory, add the following lines to the Web.config file.
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" />
<add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" />
</httpHandlers>
</system.web>
</configuration>
Available since 1.1