Comment : enregistrer des gestionnaires HTTP

Mise à jour : novembre 2007

Après avoir créé une classe de gestionnaire HTTP personnalisée, vous devez l'enregistrer dans le fichier Web.config. Ceci permet à ASP.NET d'appeler le gestionnaire HTTP pour répondre aux demandes de ressources portant l'extension de nom de fichier spécifié.

Comment vous enregistrez un gestionnaire HTTP dépend de la version du service Internet (IIS) qui héberge votre application. Pour IIS 6.0, vous enregistrez le gestionnaire en utilisant la httpHandlers du fichier Web.config. Pour IIS 7.0 s'exécutant en mode Classique, vous enregistrez le gestionnaire dans la section httpHandlers et vous mappez le gestionnaire au fichier Aspnet_isapi.dll. Pour IIS 7.0 s'exécutant en mode Intégré, vous enregistrez le gestionnaire en utilisant l'élément handlers dans la section system.WebServer.

Pour enregistrer un gestionnaire HTTP pour IIS 6.0

  1. Compilez la classe de gestionnaire HTTP et copiez l'assembly dans le dossier Bin sous le répertoire racine de l'application.

    - ou -

    Placez le code source du gestionnaire dans le dossier App_Code de l'application.

    Pour obtenir un exemple de gestionnaire HTTP, consultez Procédure pas à pas : création d'un gestionnaire HTTP synchrone.

  2. Dans le fichier Web.config de l'application, créez une section httpHandlers.

    L'exemple de code suivant montre comment enregistrer un gestionnaire HTTP qui répond aux requêtes de ressource SampleHandler.new. Le gestionnaire est défini comme classe SampleHandler dans l'assembly SampleHandlerAssembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
    </configuration>
    

    L'exemple mappe toutes les requêtes HTTP de fichiers portant l'extension « .SampleFileExtension » à la classe SampleHandler2. Dans ce cas, le code de gestionnaire se trouve dans le répertoire App_Code, vous n'avez donc pas besoin de spécifier un assembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2 " />
        </httpHandlers>
      <system.web>
    </configuration>
    
  3. Configurez IIS pour transférer la requête de l'extension de nom de fichier personnalisée vers ASP.NET.

    Pour plus d'informations, consultez Comment : configurer une extension du gestionnaire HTTP dans IIS.

Pour enregistrer un gestionnaire HTTP pour IIS 7.0 s'exécutant en mode Classique

  1. Compilez la classe de gestionnaire HTTP et copiez l'assembly dans le dossier Bin sous le répertoire racine de l'application.

    - ou -

    Placez le code source du gestionnaire dans le dossier App_Code de l'application.

    Pour obtenir un exemple de gestionnaire HTTP, consultez Procédure pas à pas : création d'un gestionnaire HTTP synchrone.

  2. Dans le fichier Web.config de l'application, créez une section httpHandlers.

  3. Créez une section system.webServer à l'intérieur de l'élément de configuration.

  4. Créez un élément handlers dans la section system.WebServer.

    Remarque :

    Vous devez définir à la fois un élément httpHandlers et un élément handlers.

    L'exemple de code suivant montre comment enregistrer un gestionnaire HTTP qui répond aux requêtes de ressource SampleHandler.new. Le gestionnaire est défini comme classe SampleHandler dans l'assembly SampleHandlerAssembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler" verb="*" path="SampleHandler.new" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    Remplacez FrameworkPath par le chemin d'accès correct au fichier Aspnet_isapi.dll.

    L'exemple mappe toutes les requêtes HTTP de fichiers portant l'extension « .SampleFileExtension » à la classe SampleHandler2. Dans ce cas, le code de gestionnaire se trouve dans le répertoire App_Code, vous n'avez donc pas besoin de spécifier un assembly.

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler2" verb="*" path="*.SampleFileExtension" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    Remplacez FrameworkPath par le chemin d'accès correct au fichier Aspnet_isapi.dll.

    Remarque :

    Pour IIS 7.0 s'exécutant en mode Classique, vous ne devez pas utiliser séparément le Gestionnaire des services IIS pour mapper l'extension de nom de fichier au fichier Aspnet_isapi.dll, comme vous le faites avec IIS 6.0. Vous pouvez mapper l'extension dans le fichier Web.config.

Pour enregistrer un gestionnaire HTTP pour IIS 7.0 s'exécutant en mode Intégré

  1. Compilez la classe de gestionnaire HTTP et copiez l'assembly dans le dossier Bin sous le répertoire racine de l'application.

    - ou -

    Placez le code source du gestionnaire dans le dossier App_Code de l'application.

    Pour obtenir un exemple de gestionnaire HTTP, consultez Procédure pas à pas : création d'un gestionnaire HTTP synchrone.

  2. Dans le fichier Web.config de l'application, créez un élément handlers dans la section system.webServer.

    Remarque :

    Les gestionnaires définis dans l'élément httpHandlers ne sont pas utilisés. Si vous ne supprimez pas les enregistrements de httpHandlers, vous devez affecter la valeur false à l'attribut validateIntegratedModeConfiguration de l'élément validation pour évitez des erreurs. L'élément validation est un élément enfant de l'élément system.webServer. Pour plus d'informations, consultez « Disabling the migration error message » dans ASP.NET Integration with IIS 7.0.

    L'exemple de code suivant montre comment enregistrer un gestionnaire HTTP qui répond aux requêtes de ressource SampleHandler.new. Le gestionnaire est défini comme classe SampleHandler dans l'assembly SampleHandlerAssembly.

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler" verb="*" 
            path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" 
            resourceType="Unspecified" />
        </handlers>
      <system.webServer>
    </configuration>
    
    Remarque :

    L'attribut resourceType a la même fonction que l'option Vérifier l'existence du fichier dans le Gestionnaire des services IIS pour IIS 6.0.

    L'exemple suivant montre comment mapper toutes les requêtes HTTP de fichiers avec l'extension de nom de « .SampleFileExtension » à la classe gestionnaire HTTP SampleHandler2. Dans ce cas, le code de gestionnaire se trouve dans le répertoire App_Code, vous n'avez donc pas besoin de spécifier un assembly.

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler2" verb="*"
            path="*.SampleFileExtension" 
            type="SampleHandler2" />
            resourceType="Unspecified" />
        <handlers>
      <system.webServer>
    </configuration>
    

    Pour IIS 7.0 s'exécutant en mode Intégré, seule l'inscription dans l'élément handlers est requise.

    Pour plus d'informations sur l'élément de configuration IIS web.webServer, consultez system.webServer Section Group (IIS Settings Schema) sur le site Web MSDN.

    Pour plus d'informations sur la configuration d'un gestionnaire pour une extension de nom de fichier personnalisée, consultez Comment : configurer une extension du gestionnaire HTTP dans IIS.

Voir aussi

Tâches

Comment : configurer une extension du gestionnaire HTTP dans IIS

Comment : créer un gestionnaire HTTP asynchrone

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

Concepts

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

Vue d'ensemble du cycle de vie des applications ASP.NET pour IIS 7.0