2010-09-11 11 views
1

Je veux changer le contenu de la page pendant qu'il va du serveur parce que j'ai besoin d'ajouter des publicités dans les éléments html qui sont détenteur de la publicité.Yat-il un moyen d'obtenir l'accès et de changer à la page avant de quitter le serveur?

protected void Application_PreSendRequestContent(object sender, EventArgs e) c'est bon mais je n'ai pas pu accéder à HttpContext. Dois-je, je ne sais pas :)

Mais dans cette méthode: protected void Application_EndRequest(object sender, EventArgs e) je pourrais obtenir le HttpContext mais je ne pouvais pas trouver la réponse du serveur dedans.

Comment puis-je faire cela?

Répondre

0

Vous pouvez implémenter un HttpModule au lieu de global.asax. Vous pouvez trouver un exemple d'un module qui manipule la réponse dans MSDN: Walkthrough: Creating and Registering a Custom HTTP Module

Voir aussi cette page pour des informations supplémentaires (par exemple, pourquoi un HttpModule au lieu de global.asax): HTTP Handlers and HTTP Modules Overview


Pour répondre votre commentaire: voici quelques raisons pour lesquelles d'utiliser un module au lieu de global.asax (consulter le document lié ci-dessus pour plus d'informations):

  • Vous pouvez mettre en œuvre une grande partie de la fonctionnalité d'un module dans l'application de Global.asax fi le [...] cependant, les modules ont un avantage sur le fichier Global.asax parce qu'ils sont encapsulés et peuvent être créés une fois et utilisés dans de nombreuses applications différentes.
  • Dans IIS 7.0, le pipeline intégré permet aux modules gérés de s'abonner aux notifications de pipeline pour toutes les demandes, et pas uniquement pour les demandes de ressources ASP.NET.
  • Vous pouvez activer/désactiver un module via web.config (sans toucher aucun code)

Vous devez utiliser un module chaque fois que vous devez créer un code qui dépend des événements d'application, et lorsque les conditions suivantes sont remplies:

  • Vous souhaitez réutiliser le module dans d'autres applications.
  • Vous souhaitez éviter de mettre du code complexe dans le fichier Global.asax.
  • Le module s'applique à toutes les demandes dans le pipeline (mode intégré IIS 7.0 uniquement).
+0

Pourquoi offrez-vous HttpModudle au lieu de Global.asax? Je ne peux pas accéder au contenu de la page? – uzay95

0

vide Application_PreSendRequestContent (objet de l'expéditeur, EventArgs e) protégé ce qui est bon, mais je ne pouvais pas avoir accès à HttpContext. Dois-je, je ne sais pas :)

Vous pouvez toujours avoir accès au HttpContext pour la demande actuelle en utilisant HttpContext.Current