Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt eine Instanz einer Klasse zurück, die die IHttpHandler-Schnittstelle implementiert.
Namespace: System.Web
Assembly: System.Web (in system.web.dll)
Syntax
'Declaration
Function GetHandler ( _
context As HttpContext, _
requestType As String, _
url As String, _
pathTranslated As String _
) As IHttpHandler
'Usage
Dim instance As IHttpHandlerFactory
Dim context As HttpContext
Dim requestType As String
Dim url As String
Dim pathTranslated As String
Dim returnValue As IHttpHandler
returnValue = instance.GetHandler(context, requestType, url, pathTranslated)
IHttpHandler GetHandler (
HttpContext context,
string requestType,
string url,
string pathTranslated
)
IHttpHandler^ GetHandler (
HttpContext^ context,
String^ requestType,
String^ url,
String^ pathTranslated
)
IHttpHandler GetHandler (
HttpContext context,
String requestType,
String url,
String pathTranslated
)
function GetHandler (
context : HttpContext,
requestType : String,
url : String,
pathTranslated : String
) : IHttpHandler
Parameter
- context
Eine Instanz der HttpContext-Klasse, die Verweise auf systeminterne Serverobjekte (z. B. Request, Response, Session und Server) bereitstellt, die für die Bearbeitung von HTTP-Anforderungen verwendet werden.
- requestType
Die vom Client verwendete HTTP-Datenübertragungsmethode (GET oder POST).
- url
Der RawUrl der angeforderten Ressource.
- pathTranslated
Der PhysicalApplicationPath zur angeforderten Ressource.
Rückgabewert
Ein neues IHttpHandler-Objekt, das die Anforderung verarbeitet.
Beispiel
Im folgenden Codebeispiel wird das Erstellen eines benutzerdefinierten Handlerobjekts als Antwort auf eine Clientanforderung veranschaulicht. Das Beispiel besteht aus zwei Teilen:
Einer Handlerfactoryklasse.
Einem Auszug aus einer Web.config-Datei.
Im ersten Teil des Beispiels wird das Erstellen benutzerdefinierter Handlerobjekte als Antwort auf eine Clientanforderung für eine Seite mit der Bezeichnung abc.aspx oder xyz.aspx gezeigt. Die Handlerfactoryklasse hwf erstellt das entsprechende Handlerobjekt gemäß der angeforderten Seite.
' 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>
// Name this C# file HandlerFactoryTest.cs and compile it with the
// command line: csc /t:Library /r:System.Web.dll HandlerFactoryTest.cs.
// Copy HandlerFactoryTest.dll to your \bin directory.
namespace test
{
using System;
using System.Web;
// 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 : IHttpHandlerFactory
{
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
public virtual IHttpHandler GetHandler(HttpContext context,
String requestType,
String url,
String pathTranslated)
{
String fname = url.Substring(url.LastIndexOf('/')+1);
String cname = fname.Substring(0, fname.IndexOf('.'));
String className = "test." + cname;
Object h = null;
// Try to create the handler object.
try
{
// Create the handler by calling class abc or class xyz.
h = Activator.CreateInstance(Type.GetType(className));
}
catch(Exception e)
{
throw new HttpException("Factory couldn't create instance " +
"of type " + className, e);
}
return (IHttpHandler)h;
}
// This is a must override method.
public virtual void ReleaseHandler(IHttpHandler handler)
{
}
}
// Class definition for abc.aspx handler.
public class abc : IHttpHandler
{
public virtual void ProcessRequest(HttpContext context)
{
context.Response.Write("<html><body>");
context.Response.Write("<p>ABC Handler</p>\n");
context.Response.Write("</body></html>");
}
public virtual bool IsReusable
{
get { return true; }
}
}
// Class definition for xyz.aspx handler.
public class xyz : IHttpHandler
{
public virtual void ProcessRequest(HttpContext context)
{
context.Response.Write("<html><body>");
context.Response.Write("<p>XYZ Handler</p>\n");
context.Response.Write("</body></html>");
}
public virtual bool IsReusable
{
get { return true; }
}
}
}
/*
______________________________________________________________
To use the handler factory, use the following lines in a
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>
*/
package test;
// Name this J# file HandlerFactoryTest.jsl and compile it with the
// command line: vjc /t:Library /r:System.Web.dll HandlerFactoryTest.jsl.
// Copy HandlerFactoryTest.dll to your \bin directory.
import System.*;
import System.Web.*;
// 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
{
public IHttpHandler GetHandler(HttpContext context, String requestType,
String url, String pathTranslated) throws HttpException
{
String fname = url.Substring((url.LastIndexOf('/') + 1));
String cname = fname.Substring(0, fname.IndexOf('.'));
String className = "test." + cname;
Object h = null;
// Try to create the handler object.
try {
// Create the handler by calling class abc or class xyz.
h = Activator.CreateInstance(Type.GetType(className));
}
catch (System.Exception e) {
throw new HttpException("Factory couldn't create instance "
+ "of type " + className, e);
}
return ((IHttpHandler)h);
} //GetHandler
// This is a must override method.
public void ReleaseHandler(IHttpHandler handler)
{
} //ReleaseHandler
} //MyFactory
// Class definition for abc.aspx handler.
public class abc implements IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.get_Response().Write("<html><body>");
context.get_Response().Write("<p>ABC Handler</p>\n");
context.get_Response().Write("</body></html>");
} //ProcessRequest
/** @property
*/
public boolean get_IsReusable()
{
return true;
} //get_IsReusable
} //abc
// Class definition for xyz.aspx handler.
public class xyz implements IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.get_Response().Write("<html><body>");
context.get_Response().Write("<p>XYZ Handler</p>\n");
context.get_Response().Write("</body></html>");
} //ProcessRequest
/** @property
*/
public boolean get_IsReusable()
{
return true;
} //get_IsReusable
} //xyz
/*
______________________________________________________________
To use the handler factory, use the following lines in a
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>
*/
// Name this JScript file HandlerFactoryTest.js and compile it with
// the command line: jsc /t:library /r:System.Web.dll HandlerFactoryTest.js.
// Copy HandlerFactoryTest.dll to your bin directory.
import System
import System.Web
package test{
// Factory class that creates a handler object based on request
// for either abc.aspx or xyz.aspx : specified in web.config.
class MyFactory implements IHttpHandlerFactory{
function IHttpHandlerFactory.GetHandler(context : HttpContext, requestType : String, url : String, pathTranslated : String) : IHttpHandler{
var fname : String = url.Substring(url.LastIndexOf(Char("/")) + 1)
var cname : String = fname.Substring(0, fname.IndexOf(Char(".")))
var className : String = "test." + cname
var h : Object = null
try{// to create the handler object.
// Create by calling class abc or class xyz.
h = Activator.CreateInstance(Type.GetType(className))
}catch(e : Exception){
throw new HttpException("Factory couldn't create instance of type " + className, e)
}
return IHttpHandler(h)
}
// Must override this class.
function IHttpHandlerFactory.ReleaseHandler(handler : IHttpHandler){
}
}
// Class definition for abc.aspx handler.
class abc implements IHttpHandler{
function IHttpHandler.ProcessRequest(context : HttpContext){
context.Response.Write("<html><body>")
context.Response.Write("<p>ABC Handler</p>\r\n")
context.Response.Write("</body></html>")
}
function get IHttpHandler.IsReusable() : Boolean{
return true
}
}
// Class definition for xyz.aspx handler.
class xyz implements IHttpHandler{
function IHttpHandler.ProcessRequest(context : HttpContext){
context.Response.Write("<html><body>")
context.Response.Write("<p>XYZ Handler</p>\r\n")
context.Response.Write("</body></html>")
}
function get IHttpHandler.IsReusable() : Boolean{
return true
}
}
}
//______________________________________________________________
//
//To use the above handler factory, use the following lines in a
//Web.config file. (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>
Der zweite Teil des Beispiels zeigt einen Auszug aus der Datei Web.config. Fügen Sie die folgenden Zeilen in die Web.config-Datei ein, um die oben genannte Handlerfactory zu verwenden.
<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>
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
IHttpHandlerFactory-Schnittstelle
IHttpHandlerFactory-Member
System.Web-Namespace