Cliquez pour évaluer et commenter
MSDN
MSDN Library
Visual Studio 2005
Documentation Visual Studio
Sites Web
Informations supplémentaires
 Introduction aux modules HTTP
ASP.NET
Introduction aux modules HTTP

Un module HTTP est un assembly appelé sur chaque demande effectuée sur votre application. Les modules HTTP sont appelés dans le cadre du pipeline de demande ASP.NET et ont accès aux événements du cycle de vie de toute la demande. Par conséquent, les modules HTTP vous donnent la possibilité d'examiner les demandes entrantes et d'agir en fonction de la demande. Ils vous donnent également la possibilité d'examiner la réponse sortante et de la modifier.

Les modules HTTP ASP.NET sont semblables aux filtres ISAPI en ce sens qu'ils s'exécutent pour toutes les demandes. Toutefois, ils sont écrits en code managé et sont pleinement intégrés au cycle de vie d'une application ASP.NET.

Parmi les utilisations de modules HTTP figurent les utilisations suivantes :

  • Sécurité. Comme vous pouvez examiner les requêtes entrantes, votre module HTTP peut exécuter l'authentification personnalisée ou d'autres vérifications de la sécurité avant que la page, le service Web XML ou le gestionnaire demandé ne soit appelé.

  • Statistiques et ouverture de session. Étant donné que les modules HTTP sont appelés sur chaque demande, vous pouvez recueillir les statistiques de demande et les informations d'enregistrement dans un module centralisé, plutôt que dans des pages individuelles.

  • En-têtes ou pieds de page personnalisés. Dans la mesure où vous pouvez modifier la réponse sortante, vous pouvez injecter le contenu dans chaque réponse de page ou de service Web, par exemple un pied de page personnalisé.

ASP.NET utilise des modules pour implémenter différentes fonctionnalités de l'application, et notamment l'authentification par formulaire, la mise en cache, l'état de session et les services de script client. Dans chaque cas, lorsque ces services sont activés, le module est appelé dans le cadre d'une demande et exécute des tâches en dehors d'une demande de page unique. Les modules peuvent utiliser des événements d'application et déclencher des événements qui peuvent être gérés dans le fichier Global.asax. Pour plus d'informations sur les événements d'application, consultez Vue d'ensemble du cycle de vie des applications ASP.NET.

RemarqueRemarque

Les modules HTTP diffèrent des gestionnaires HTTP. Les modules HTTP sont appelés pour toutes les demandes et réponses, alors que les gestionnaires HTTP ne s'exécutent qu'en réponse à des demandes spécifiques. Pour plus d'informations, consultez Introduction aux gestionnaires HTTP.

Mode de fonctionnement des modules HTTP

Vous enregistrez un module HTTP personnalisé dans le fichier Web.config de votre application. Lorsque ASP.NET crée une instance de la classe HttpApplication qui représente votre application, les instances de tous modules ayant été enregistrés sont créées. Lorsqu'un module est créé, sa méthode Init est appelée et le module s'initialise. Pour plus d'informations, consultez Vue d'ensemble du cycle de vie des applications ASP.NET.

Dans la méthode Init d'un module, vous pouvez vous abonner à de nombreux événements d'application tels que BeginRequest ou EndRequest en liant les événements aux méthodes du module que vous avez créées. Lorsque ces événements sont déclenchés, la méthode appropriée du module est appelée et le module peut s'exécuter quelle que soit la logique requise, comme un contrôle d'authentification ou l'enregistrement des informations de la demande. Lors de la gestion d'événements, le module a accès à la propriété Context de la demande actuelle. Cela vous permet de rediriger la demande vers une autre page, de modifier la demande ou d'exécuter toute autre manipulation de demande. Par exemple, si votre module inclut un contrôle d'authentification, il peut vérifier les informations d'identification et se rediriger vers une page d'ouverture de session ou d'erreur si les informations d'identification n'étaient pas correctes. Sinon, lorsque le gestionnaire d'événement du module a fini de s'exécuter, ASP.NET appelle le processus suivant du pipeline, lequel peut être un autre module ou le gestionnaire HTTP approprié (comme un fichier .aspx) de la demande.

Modules HTTP et fichiers Global.asax

Vous pouvez implémenter de nombreuses fonctionnalités d'un module dans le fichier Global.asax de l'application, ce qui vous permet de répondre aux événements d'application. Toutefois, les modules ont un avantage sur le fichier Global.asax en ce sens qu'ils sont encapsulés et qu'ils peuvent être créés une seule fois et utilisés dans différentes applications. En les ajoutant au Global Assembly Cache (GAC) et en les enregistrant dans le fichier Machine.config, vous pouvez les réutiliser dans les applications. Pour plus d'informations, consultez Global Assembly Cache.

Toutefois, l'avantage de l'utilisation du fichier Global.asax est que vous pouvez placer du code dans d'autres événements de module enregistrés tels que les méthodes Session_Start et Session_End. En outre, le fichier Global.asax vous permet également d'instancier des objets globaux disponibles dans l'ensemble de l'application.

Vous devez utiliser un module chaque fois que vous devez créer du code qui dépend des événements d'application et que vous souhaitez réutiliser le module dans d'autres applications ou que vous ne souhaitez pas placer un code complexe dans le fichier Global.asax. Vous devez placer le code dans le fichier Global.asax toutes les fois que vous devez créer un code qui dépend des événements d'application et que vous n'avez pas besoin de le réutiliser dans les applications, ou lorsque vous devez vous abonner à des événements tels que Session_Start, non disponibles pour les modules.

Création d'un module HTTP

Vous pouvez créer un module HTTP personnalisé en créant une classe qui implémente l'interface IHttpModule et en l'enregistrant ensuite dans le fichier Web.config. Le processus général d'écriture d'un module HTTP est le suivant :

  • Définissez une classe qui implémente l'interface IHttpModule frlrfSystemWebIHttpModuleClassTopic.

  • Ajoutez un gestionnaire pour la méthode InitfrlrfSystemWebIHttpModuleClassInitTopic. Votre méthode init doit initialiser votre module et s'abonner aux événements d'application dont vous avez besoin. Par exemple, vous pouvez vous abonner à l'événement EndRequest si vous souhaitez ajouter quelque chose aux réponses ou vous abonner à l'événement AuthenticateRequest si vous souhaitez exécuter une logique d'authentification personnalisée. Pour plus d'informations sur les événements d'application, consultez Vue d'ensemble du cycle de vie des applications ASP.NET.

  • Écrivez le code des événements auxquels vous vous êtes abonné.

  • À titre facultatif, implémentez la méthode Dispose si votre module requiert un nettoyage.

  • Inscrivez le module dans le fichier Web.config.

Pour plus d'informations, consultez Comment : créer des modules HTTP personnalisés.

Voir aussi

Contenu de la communauté   Qu'est-ce que le Contenu de la communauté ?
Ajouter du contenu RSS  Annotations
Processing
© 2008 Microsoft Corporation. Tous droits réservés. Conditions d'utilisation  |  Marques  |  Confidentialité
Page view tracker