Ordre d’exécution d’événement HTTPModule?

Est-ce que quelqu’un connaît un site ou une page ou connaît l’ordre d’exécution des événements de la classe HTTPApplication pour l’exécution de l’événement HTTPModule?

J’ai trouvé la documentation MSDN pour tous les événements, mais elle ne montre pas la liste des étapes du processus et je n’ai pas pu en trouver une.

Peut-être que cela aide

http://support.microsoft.com/kb/307985/en-us/

Une classe HttpApplication fournit un certain nombre d’événements avec lesquels les modules peuvent se synchroniser. Les événements suivants sont disponibles pour les modules à synchroniser avec chaque requête. Ces événements sont répertoriés par ordre séquentiel:

  1. BeginRequest
  2. AuthenticateRequest
  3. AuthorizeRequest
  4. ResolveRequestCache
  5. AcquireRequestState
  6. PreRequestHandlerExecute
  7. PostRequestHandlerExecute
  8. ReleaseRequestState
  9. UpdateRequestCache
  10. EndRequest

Les événements suivants sont disponibles pour les modules à synchroniser pour chaque transmission de requête. L’ordre de ces événements est non déterministe.

  • PreSendRequestHeaders
  • PreSendRequestContent
  • Erreur

Voir l’article pour plus d’informations.

Documentation MSDN Library:

  • 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

Voici les événements (en gras) et les autres étapes du pipeline de demandes pour ASP.NET 4.0:

  1. Validez la demande, qui examine les informations envoyées par le navigateur et détermine si elle contient des balises potentiellement malveillantes.
  2. Effectuez un mappage d’URL si des URL ont été configurées dans la section UrlMappingsSection du fichier Web.config.
  3. Élevez l’événement BeginRequest .
  4. Élevez l’événement AuthenticateRequest .
  5. Élevez l’événement PostAuthenticateRequest .
  6. Élevez l’événement AuthorizeRequest .
  7. Élevez l’événement PostAuthorizeRequest .
  8. Élevez l’événement ResolveRequestCache .
  9. Élevez l’événement PostResolveRequestCache .
  10. [IIS 5.0 / 6.0] En fonction de l’extension du nom de fichier de la ressource demandée (mappée dans le fichier de configuration de l’application), sélectionnez une classe qui implémente IHttpHandler pour traiter la demande. Si la demande concerne un object (page) dérivé de la classe Page et que la page doit être compilée, ASP.NET comstack la page avant de créer une instance de celle-ci. [IIS 7.0] Élevez l’événement MapRequestHandler . Un gestionnaire approprié est sélectionné en fonction de l’extension du nom de fichier de la ressource demandée. Le gestionnaire peut être un module de code natif tel que IIS 7.0 StaticFileModule ou un module de code managé tel que la classe PageHandlerFactory (qui gère les fichiers .aspx).
  11. Élevez l’événement PostMapRequestHandler .
  12. Élevez l’événement AcquireRequestState .
  13. Élevez l’événement PostAcquireRequestState .
  14. Élevez l’événement PreRequestHandlerExecute .
  15. Appelez la méthode ProcessRequest (ou la version asynchrone IHttpAsyncHandler.BeginProcessRequest) de la classe IHttpHandler appropriée pour la demande. Par exemple, si la demande concerne une page, l’instance de page en cours gère la demande.
  16. Élevez l’événement PostRequestHandlerExecute .
  17. Élevez l’événement ReleaseRequestState .
  18. Élevez l’événement PostReleaseRequestState .
  19. Effectuez un filtrage des réponses si la propriété Filter est définie.
  20. Élevez l’événement UpdateRequestCache .
  21. Élevez l’événement PostUpdateRequestCache .
  22. [IIS 7.0] Élevez l’événement LogRequest .
  23. [IIS 7.0] Élevez l’événement PostLogRequest .
  24. Élevez l’événement EndRequest .
  25. Élevez l’événement PreSendRequestHeaders .
  26. Élevez l’événement PreSendRequestContent .

Remarque: Les événements MapRequestHandler, LogRequest et PostLogRequest sont pris en charge uniquement si l’application est exécutée en mode intégré dans IIS 7.0 et avec .NET Framework 3.0 ou version ultérieure.

BeginRequest

La demande a été lancée. Si vous devez faire quelque chose au début d’une requête (par exemple, afficher des bannières publicitaires en haut de chaque page ou une initialisation de variable).

AuthenticateRequest

Si vous souhaitez twigr votre propre schéma d’authentification personnalisé (par exemple, recherchez un utilisateur dans une firebase database pour valider le mot de passe ou vérifier les informations d’en-tête dans la requête HTTP).

AuthorizeRequest

Cet événement est utilisé en interne pour implémenter des mécanismes d’autorisation (par exemple, pour stocker vos listes de contrôle d’access (ACL) dans une firebase database plutôt que dans le système de fichiers).

ResolveRequestCache

Cet événement détermine si une page peut être diffusée à partir du cache de sortie. Si vous souhaitez écrire votre propre module de mise en cache (par exemple, créer un cache basé sur des fichiers plutôt qu’un cache de mémoire), synchronisez cet événement pour déterminer s’il convient de diffuser la page à partir du cache ou si une nouvelle page est générée.

AcquireRequestState

L’état de la session est extrait du magasin d’état. Si vous voulez créer votre propre module de gestion d’état, synchronisez cet événement pour récupérer l’état de session de votre magasin d’état.

PreRequestHandlerExecute

Cet événement se produit avant l’exécution du gestionnaire HTTP.

PostRequestHandlerExecute

Cet événement se produit après l’exécution du gestionnaire HTTP.

ReleaseRequestState

L’état de la session est stocké dans le magasin d’état. Si vous créez un module d’état de session personnalisé, vous devez stocker votre état dans votre magasin d’état.

UpdateRequestCache

Cet événement écrit la sortie dans le cache de sortie.

EndRequest

La demande a été complétée.

Vous voulez appeler la méthode de mise en cache dans l’événement PreSendRequestContent de httpmodule. Le problème est qu’il ya des en-têtes et des pieds de page Web ajoutés selon les besoins des clients dans mon application et que je ne pouvais pas mettre en cache les contenus, les javascript et les css. Actuellement, en utilisant la méthode ReleaseRequestState de httpmodule.