Ordre D'Exécution De L'Événement HTTPModule?

est-ce que quelqu'un connaît un site ou une page, ou l'ordre d'exécution pour les événements de la classe HTTPApplication pour L'exécution des événements HTTPModule?

j'ai trouvé le MSDN Documentation pour tous les événements, mais il ne montre pas une liste des étapes du processus et je n'ai pas été en mesure d'en trouver un.

59
demandé sur Michael Liu 2009-01-14 03:13:00

4 réponses

peut-être que cela aide

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

une classe D'application 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 sur chaque demande. Ces événements sont énumérés dans l'ordre:

  1. BeginRequest
  2. Demande authentique
  3. AuthorizeRequest
  4. ResolveRequestCache
  5. Acquirerequestate
  6. préalable à la délivrance d'une licence
  7. Postequesthandlerexécute
  8. ReleaseRequestState
  9. UpdateRequestCache
  10. EndRequest

Les événements suivants sont disponibles pour 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.

76
répondu Jader Dias 2009-01-14 00:32:46

de la Bibliothèque MSDN documentation:

Voici les événements (en caractères gras) et les autres étapes dans le pipeline de demande pour ASP.NET 4.0:

  1. valident la demande, qui examine les informations envoyées par le navigateur et détermine si elles contiennent un balisage potentiellement malveillant.
  2. effectuer la cartographie URL, si des URLs ont été configurées dans la section UrlMappingsSection du Web.fichier de configuration.
  3. Soulever BeginRequest de l'événement.
  4. Soulever AuthenticateRequest de l'événement.
  5. Soulever PostAuthenticateRequest de l'événement.
  6. Raise the Authorierequest event.
  7. Soulever PostAuthorizeRequest de l'événement.
  8. Soulever ResolveRequestCache de l'événement.
  9. Soulever PostResolveRequestCache de l'événement.
  10. [IIS 5.0/6.0] basé sur 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 requête. Si la requête est pour un objet (page) dérivé de la classe Page et que la page doit être compilée, ASP.NET compile la page avant d'en créer une instance. [IIS 7.0] Soulever MapRequestHandler de l'événement. Un gestionnaire approprié est sélectionné en fonction de l'extension du nom de fichier de la ressources. Le gestionnaire peut être un module de code natif tel que le IIS 7.0 StaticFileModule ou un module de code géré tel que la classe PageHandlerFactory (qui gère .fichiers aspx).
  11. Soulever PostMapRequestHandler de l'événement.
  12. Raise the Acquirerequestate event.
  13. Raise the Postacquirerequestate event.
  14. Raise L'événement doit être précédé de L'événement .
  15. appelle la méthode ProcessRequest (ou la version asynchrone IHttpAsyncHandler.BeginProcessRequest) de la classe IHttpHandler appropriée pour la requête. Par exemple, si la requête est pour une page, l'instance de la page courante traite la requête.
  16. Raise the Postequesthandlerexecute event.
  17. Soulever ReleaseRequestState événement.
  18. Raise the Postreleaserequestate event.
  19. effectue le filtrage de réponse si la propriété Filter est définie.
  20. Soulever UpdateRequestCache de l'événement.
  21. Soulever PostUpdateRequestCache de l'événement.
  22. [IIS 7.0] Raise the LogRequest de l'événement.
  23. [IIS 7.0] Soulever PostLogRequest de l'événement.
  24. levez l'événement EndRequest .
  25. Soulever PreSendRequestHeaders de l'événement.
  26. Soulever PreSendRequestContent de l'événement.

Note: Les évènements MapRequestHandler, LogRequest et PostLogRequest ne sont pris en charge que si l'application tourne en mode intégré dans IIS 7.0 et avec le Framework.net 3.0 ou plus tard.

47
répondu Michael Liu 2012-01-22 00:02:20

BeginRequest

La requête

a été lancée. Si vous avez besoin de faire quelque chose au début d'une requête (par exemple, affichez des bannières publicitaires en haut de chaque page ou une certaine initialisation variable).

AuthenticateRequest

si vous voulez brancher votre propre système d'authentification personnalisé (par exemple, rechercher un utilisateur contre une base de données pour valider la mot de passe ou vérification des informations d'en-tête dans la requête HTTP).

Authorierequest

cet événement est utilisé à l'interne pour implémenter des mécanismes d'autorisation (par exemple, pour stocker vos listes de contrôle d'accès (ACLs) dans une base de données plutôt que dans le système de fichiers).

ResolveRequestCache

cet événement détermine si une page peut être servie à partir du Cache de sortie. Si vous voulez écrire votre propre module de mise en cache (par exemple, construire un cache basé sur un fichier plutôt qu'un cache de mémoire), puis synchronisez cet événement pour déterminer si servir la page à partir du cache ou une nouvelle page sera générée.

Acquirerequestate

L'état de Session est récupéré dans le magasin d'état. Si vous voulez construire votre propre module de gestion d'état, synchronisez cet événement pour saisir l'état de la Session à partir de votre le magasin d'état.

condition préalable à la délivrance d'une licence

cet événement se produit avant l'exécution du gestionnaire HTTP.

Postrequesthandlerexécute

cet événement se produit après l'exécution du gestionnaire HTTP.

Releaserequestate

L'état de Session est stocké dans le magasin d'état. Si vous êtes construire un module d'état de session personnalisé alors vous devez stocker votre état de retour dans votre magasin d'état.

UpdateRequestCache

cet événement renvoie la sortie au Cache de sortie.

EndRequest

La demande

est terminée.

3
répondu akazemis 2016-07-19 04:34:48

Voulez l'appeler la méthode de la mise en cache dans PreSendRequestContent cas de httpmodule. Le problème est qu'il y a un en-tête web et un pied de page ajoutés selon les exigences des clients dans mon application et je ne pouvais pas mettre en cache que les images de contenu, javascript et css. A l'heure actuelle, J'utilise la méthode Releaserequestate de httpmodule.

0
répondu bhaumik pandit 2016-10-03 07:52:02