Écrit devant
Concernant le contenu pertinent d’IHttpModule, on m’a aussi demandé lors de l’entretien, et j’ai vaguement eu l’impression que cette interface possède une méthode Init, qui peut enregistrer une série d’événements avec la méthode Init dans la classe d’implémentation. À la maison ce week-end, il n’y a vraiment rien à faire, même si c’est pour vérifier et combler les lacunes dans cette connaissance.
Fonctionne le module IHttpModule
Les amis qui connaissent asp.net cycle de vie doivent savoir que l’exécution de HttpModule s’exécute avant HttpHandler, puis après avoir exécuté une série d’événements de HttpModule, puis exécuté HttpHandler, puis exécuté certains événements de HttpModule. Pour plus de détails, veuillez consulter le schéma du cycle de vie suivant.
L’HttpHandler est l’endroit où il faut gérer la requête http, le HttpModule est la « seule façon » pour une requête HTTP, donc vous pouvez ajouter certaines informations requises en plus des données HTTP avant que cette requête HTTP ne soit transmise au véritable centre de traitement des requêtes (HttpHandler), ou effectuer un travail supplémentaire sur les informations interceptées de la requête HTTP. Ou, dans certains cas, simplement terminer les requêtes HTTP qui remplissent certaines conditions, ce qui peut servir de filtre.
Une requête HTTP sera transmise au conteneur HttpHandler à un moment donné (événement ResolveRequestCache) lors de la livraison du conteneur HttpModule. Après cet événement, le conteneur HttpModule crée une instance d’entrée du HttpHandler, mais au lieu de céder le contrôle de la requête HTTP, il continue de lancer les événements AcquireRequestState et PreRequestHandlerExcute. Après l’événement PreRequestHandlerExcute, la fenêtre HttpModule donne temporairement le contrôle au conteneur HttpHandler pour le traitement réel des requêtes HTTP.
À l’intérieur du conteneur HttpHandler, la méthode ProcessRequest est exécutée pour traiter les requêtes HTTP. Après que le HttpHandler du conteneur ait traité l’ensemble de la requête HTTP, il renvoie le contrôle au HttpModule, qui continue de transmettre l’information de la requête HTTP traitée couche par couche jusqu’à ce qu’elle soit renvoyée au client.
Un cas
Structure du projet
Code MyHttpModule
Enregistrer un HttpModule personnalisé dans web.config
Parcourir la page Default.aspx
Alors, quel est l’ordre d’exécution d’une série d’événements dans le cycle de vie ?
Parcourez les résultats
Utilisez HttpModule pour terminer la requête Http
résultat
résumé
Nous introduisons ici l’interface la plus importante du cycle de vie asp.net, l’IHttpModule, qui peut être décrite comme une interface d’événements, car dans la méthode Init de la classe d’implémentation, divers événements du cycle de vie peuvent être enregistrés, et différentes logiques peuvent être définies dans l’événement.
|