Procédure pas à pas : création d'un gestionnaire HTTP synchrone

Mise à jour : novembre 2007

Cette procédure pas à pas illustre comment créer un gestionnaire HTTP qui effectue le traitement synchrone des demandes. Le gestionnaire de cet exemple traite des demandes pour les ressources dans une application ASP.NET dont l'URL se termine par .sample.

Lorsque les utilisateurs demandent une ressource dont l'URL se termine par .sample, le serveur Web transmet la demande à ASP.NET. ASP.NET appelle ensuite le gestionnaire HTTP qui retourne une réponse. La réponse est créée dynamiquement par le gestionnaire. L'existence d'un fichier ayant l'extension de nom de fichier .sample n'est pas nécessaire.

Pour plus d'informations sur la manière dont l'exécution ASP.NET interagit avec IIS 6.0, consultez Vue d'ensemble du cycle de vie des applications ASP.NET pour IIS 5.0 et 6.0. Pour plus d'informations sur l'intégration ASP.NET avec IIS 7.0, consultez Vue d'ensemble du cycle de vie des applications ASP.NET pour IIS 7.0.

Cette procédure pas à pas décrit notamment les tâches suivantes :

  • Création du code pour une classe de gestionnaire HTTP. La classe doit implémenter la méthode ProcessRequest et la propriété IsReusable.

  • Inscription du gestionnaire dans le fichier Web.config et mappage de l'extension de nom de fichier .sample à celui-ci.

  • Mappage de l'extension de nom de fichier .sample à ASP.NET dans les services IIS.

    Remarque :

    Le serveur de développement ASP.NET fournit la demande concernant la ressource après que le fichier de configuration a été modifié pour inclure une référence au nouveau gestionnaire. Pour plus d'informations sur le serveur de développement ASP.NET, consultez Serveurs Web dans Visual Web Developer. Pour permettre à IIS de traiter la demande, consultez les étapes décrites plus bas dans cette procédure.

Composants requis

Pour exécuter cette procédure pas à pas, vous avez besoin de :

  • Visual Studio ou Visual Web Developer ;

  • un site Web ASP.NET que vous pouvez exécuter à l'aide des services IIS ;

  • IIS 6.0 ou IIS 7.0.

Création d'une classe de gestionnaire HTTP synchrone

Pour créer la classe de gestionnaire personnalisée HTTP HelloWorldHandler

  1. Si le site Web avec lequel vous travaillez ne comporte pas de dossier App_Code, créez-en un sous la racine du site.

  2. Dans le répertoire App_Code, créez une classe nommée HelloWorldHandler et ajoutez le code suivant au fichier de classe.

    Imports System.Web
    
    Public Class HelloWorldHandler
        Implements IHttpHandler
    
        Public Sub ProcessRequest(ByVal context As _
                System.Web.HttpContext) Implements _
                System.Web.IHttpHandler.ProcessRequest
            Dim request As HttpRequest = context.Request
            Dim response As HttpResponse = context.Response
            ' This handler is called whenever a file ending 
            ' in .sample is requested. A file with that extension
            ' does not need to exist.
            response.Write("<html>")
            response.Write("<body>")
            response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>")
            response.Write("</body>")
            response.Write("</html>")
        End Sub
    
        Public ReadOnly Property IsReusable() As Boolean _
                Implements System.Web.IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    End Class
    
    using System.Web;
    public class HelloWorldHandler : IHttpHandler
    {
        public HelloWorldHandler()
        {
        }
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;
            HttpResponse Response = context.Response;
            // This handler is called whenever a file ending 
            // in .sample is requested. A file with that extension
            // does not need to exist.
            Response.Write("<html>");
            Response.Write("<body>");
            Response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>");
            Response.Write("</body>");
            Response.Write("</html>");
        }
        public bool IsReusable
        {
            // To enable pooling, return true here.
            // This keeps the handler in memory.
            get { return false; }
        }
    }
    

    Le code implémente la méthode ProcessRequest et écrit une chaîne dans la propriété Response de l'objet HttpContext actuel.

Inscription du gestionnaire HTTP personnalisé dans IIS 6.0

Après avoir créé la classe de gestionnaire HTTP personnalisée, vous devez l'enregistrer dans le fichier Web.config de l'application. Cela permet à ASP.NET de rechercher le gestionnaire lorsque des demandes de ressources dont l'URL se termine par .sample sont effectuées.

Différentes procédures permettent d'inscrire un gestionnaire, selon la version d'IIS utilisée (IIS 6.0 ou IIS 7.0). Cette section décrit comment inscrire un gestionnaire dans IIS 6.0. La section suivante décrit comment inscrire un gestionnaire dans IIS 7.0.

Pour inscrire le gestionnaire dans IIS 6.0

  1. Si le site Web ne possède pas de fichier Web.config, créez-en un à la racine du site.

  2. Ajoutez l'élément en surbrillance suivant à votre fichier Web.config.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="*" path="*.sample"         type="HelloWorldHandler"/>    </httpHandlers>
      </system.web>
    </configuration>
    

    L'élément de configuration inscrit le gestionnaire personnalisé par nom de classe et mappe l'extension de nom de fichier .sample à ce gestionnaire.

    Enregistrez un mappage d'extension de fichier pour l'extension de nom de fichier .sample à l'aide du Gestionnaire des services IIS. Pour plus d'informations, consultez Comment : configurer une extension du gestionnaire HTTP dans IIS.

Inscription du gestionnaire HTTP personnalisé dans IIS 7.0

Dans IIS 7.0, une application peut s'exécuter en mode classique ou intégré. En mode classique, le traitement des demandes est fortement similaire à celui appliqué dans IIS 6.0. En mode intégré, IIS 7.0 gère les demandes à l'aide d'un pipeline qui lui permet de partager demandes, modules et autres fonctionnalités avec ASP.NET.

Pour IIS 7.0, l'inscription de gestionnaire requiert d'inscrire le gestionnaire soit dans le fichier Web.config, soit dans Gestionnaire des services IIS. L'administration étant centralisée dans IIS 7.0, toute modification apportée dans le fichier Web.config d'une application est répercutée dans l'interface Gestionnaire des services IIS pour l'application, et vice versa. Dans les procédures suivantes, les gestionnaires sont inscrits dans le fichier Web.config.

Différentes procédures permettent d'inscrire le gestionnaire dans IIS 7.0 en mode classique et en mode intégré. Suivez la procédure correspondant au mode IIS que vous utilisez.

Pour inscrire le gestionnaire dans IIS 7.0 en mode classique

  1. Si le site Web ne comporte pas de fichier Web.config, créez-en un à la racine du site.

  2. Ajoutez l'élément en surbrillance suivant à votre fichier Web.config.

    Remarque :

    Substituez le chemin d'accès correct du fichier aspnet_isapi.dll. Le fichier .dll se trouve dans le dossier où le .NET Framework est installé. Par défaut, il s'agit du chemin suivant : C:\WINDOWS\Microsoft.NET\Framework\version.

    <configuration>
      <system.web>
        <httpHandlers>      <add verb="*" path="*.sample"         type="HelloWorldHandler"/>    </httpHandlers>
      </system.web>
        <system.webServer>
            <handlers>            <add  verb="*" path="*.sample"                  name="HelloWorldHandler"                  type="HelloWorldHandler"                  modules="IsapiModule"/>                  scriptProcessor="%path%\aspnet_isapi.dll"        </handlers>
        </system.webServer>
    </configuration>
    

    L'élément de configuration inscrit le gestionnaire personnalisé par nom de classe et mappe l'extension de nom de fichier .sample à ce gestionnaire.

    Remarque :

    Dans la mesure où vous inscrivez une extension de nom de fichier personnalisée, l'inscription du gestionnaire est effectuée à la fois dans la section handlers et dans la section httpHandlers. En mode classique, pour la compatibilité descendante, le gestionnaire est spécifié comme un module ISAPI à l'aide de l'attribut modules. Le chemin d'accès du dll ISAPI ASP.NET est spécifié à l'aide de l'attribut scriptProcessor. L'attribut name est requis dans la section handlers.

Pour inscrire le gestionnaire dans IIS 7.0 en mode intégré

  1. Si le site Web ne comporte pas de fichier Web.config, créez-en un à la racine du site.

  2. Ajoutez l'élément en surbrillance suivant à votre fichier Web.config.

    <configuration>
      <system.webServer>
        <handlers>      <add verb="*" path="*.sample"         name="HelloWorldHandler"        type="HelloWorldHandler"/>    </handlers>
      </system.webServer>
    </configuration>
    

    L'élément de configuration inscrit le gestionnaire personnalisé par nom de classe et mappe l'extension de nom de fichier .sample à ce gestionnaire.

    Remarque :

    L'inscription est effectuée dans la section handlers, mais pas dans la section httpHandlers. L'attribut name est requis.

Test du gestionnaire HTTP personnalisé

Après avoir créé et inscrit le gestionnaire HTTP personnalisé, vous pouvez le tester.

Pour tester votre gestionnaire HTTP personnalisé

  1. Dans le navigateur, demandez une page de l'application Web.

  2. Dans le navigateur, entrez une URL qui se termine par .sample. Par exemple, entrez l'URL suivante :

    https://localhost/SampleApplication/test.sample
    

    Le texte défini dans la classe HelloWorldHandler est affiché.

Voir aussi

Tâches

Comment : créer un gestionnaire HTTP asynchrone

Concepts

Vue d'ensemble du cycle de vie des applications ASP.NET pour IIS 5.0 et 6.0

Autres ressources

Cycle de vie ASP.NET