Fabrique de gestionnaires HttpHandler
Vous pouvez générer une nouvelle instance de gestionnaire pour chaque demande HTTP en créant une classe qui implémente l'interface IHttpHandlerFactory. Dans l'exemple suivant, une fabrique de gestionnaires HttpHandler est utilisée pour créer des gestionnaires différents pour une demande HTTP GET et une demande HTTP POST. Ces deux gestionnaires constituent respectivement une instance du gestionnaire HttpHandler synchrone et du gestionnaire HttpHandler asynchrone présentés dans les exemples ci-dessus.
using System;
using System.Web;
namespace Handlers
{
class HandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, String url, String pathTranslated)
{
IHttpHandler handlerToReturn;
if("get" == context.Request.RequestType.ToLower())
{
handlerToReturn = new SynchHandler();
}
else if("post" == context.Request.RequestType.ToLower())
{
handlerToReturn = new AsynchHandler();
}
else
{
handlerToReturn = null;
}
return handlerToReturn;
}
public void ReleaseHandler(IHttpHandler handler)
{
}
public bool IsReusable
{
get
{
// To enable pooling, return true here.
// This keeps the handler in memory.
return false;
}
}
}
}
[Visual Basic]
Imports System
Imports System.Web
Namespace Handlers
Class HandlerFactory
Implements IHttpHandlerFactory
Public Function GetHandler(ByVal context As HttpContext, ByVal requestType As String, ByVal url As [String], ByVal pathTranslated As [String]) As IHttpHandler Implements IHttpHandlerFactory.GetHandler
Dim handlerToReturn As IHttpHandler
If "get" = context.Request.RequestType.ToLower() Then
handlerToReturn = New SynchHandler()
Else
If "post" = context.Request.RequestType.ToLower() Then
handlerToReturn = New AsynchHandler()
Else
handlerToReturn = Nothing
End If
End If
Return handlerToReturn
End Function
Public Sub ReleaseHandler(ByVal handler As IHttpHandler) Implements IHttpHandlerFactory.ReleaseHandler
End Sub
Public ReadOnly Property IsReusable() As Boolean
Get
' To enable pooling, return true here.
' This keeps the handler in memory.
Return False
End Get
End Property
End Class
End Namespace
Inscrivez votre fabrique de gestionnaires HttpHandler personnalisée en créant une entrée dans Web.config de la manière suivante :
<configuration>
<system.web>
<httpHandlers>
<add verb="GET,POST" path="*.MyFactory"
type="Handlers.HandlerFactory, Handlers" />
</httpHandlers>
</system.web>
</configuration>
Voir aussi
Gestionnaires HttpHandler | Création de gestionnaires HttpHandler