Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Response.Filter : Récuperer le contenu d’une page ASP.net avant l’envoi au client

Comment récupérer le contenu d’une page ASP.net avant l’envoi au client ?

Il n’existe pas de mécanisme simple permettant cela en ASP.net, il est cependant possible d’accéder au flux dans lequel écrit ASP.net grâce à la propriété Filter de l’objet Response. Cette propriété de type Stream, correspond au Stream dans lequel écrit ASP.net, cette propriété est en lecture-écriture, cela veut dire que l’on peut altérer le Stream avant que ASP.net écrive à l’intérieur.

Pour surcharger ce comportement, nous allons créer un HttpModule permettant de modifier ce Stream avant que ASP.net commence à écrire. Dans notre HttpModule, nous allons nous abonner à l’événement PreRequestHandlerExecute, cet événement est déclenché juste après que le Handler de la requête soit instancié mais avant que la méthode ProcessRequest soit appelé.

Voici le code du HttpModule, la partie intéressante se trouve au niveau de la méthode context_PreRequestHandlerExecute. 

public class FilterSampleModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute); } void context_PreRequestHandlerExecute(object sender, EventArgs e) { if (!(HttpContext.Current.Handler is Page)) return; HttpContext.Current.Response.Filter = new MyStream(HttpContext.Current.Response.Filter); } }

Dans mon exemple, la classe MyStream est une classe qui hérite de Stream qui ne fait que englober le stream original avec un FileStream : la mis en pratique du design pattern “Decorator”. Vous pouvez récupérer l’exemple complet sur aspfr.com : Response.Fiter : Manipulation du stream de sortie de ASP.net

Posted: jeudi 29 janvier 2009 17:15 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Loïc Calvy a dit :

Bonjour Cyril,

C'est d'ailleurs un très bon endroit où placer par exemple une compression Gzip ou Deflate si on veut implémenter soit même la comrpession http.

# janvier 30, 2009 10:06

Poppyto a dit :

Euh son propre gzip ou deflate je vois pas trop l'intéret...par contre c'est LE bon endroit pour minifier son HTML si besoin.

# janvier 30, 2009 10:35

Loïc Calvy a dit :

Je parlais du fait de controler la compression soit même , pas d'implementer l'algo de compression :)

# janvier 30, 2009 11:04

Loïc Calvy a dit :

Je crois qu'il y a une petite erreur dans ton post, c'est plutot sur l'evenement PostRequestHandlerExecute qu'on doit appliquer un filtre (comme dans l'exemple du code que tu as mis) hors dans le commentaire du parle de PreRequestHandlerExecute.

http://msdn.microsoft.com/en-us/library/ms178473.aspx

# janvier 30, 2009 11:22

cyril a dit :

Loic : Il y a en effet une petite erreur que je viens de corriger dans l'exemple.

L'utilisation de PreRequestHandlerExecute ou PostHandlerExecute n'a que très peu d'incidence, ces 2 évenements seront executés juste avant et juste après le ProcessRequest du HttpHandler. Je prefere utiliser le PreRequestHandlerExecute ici, au cas où l'on fait un Response.Flush dans le Handler.

# janvier 30, 2009 12:18
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01