2010-06-23 6 views
1

J'ai un gestionnaire ASHX simple qui renvoie une image générée dynamiquement; l'image est générée à partir d'une classe créée personnalisée et un objet appartenant à cette classe est transmis au gestionnaire à l'aide de Session (je préfère éviter d'utiliser QueryString).Manipulateur ASHX; déclenche une seule fois

Le gestionnaire est utilisé comme l'URL d'une image sur un formulaire ASP qui est très simple: une liste déroulante, un bouton et une image. Fondamentalement, en fonction de ce que l'utilisateur sélectionne dans la liste, l'image appropriée sera générée une fois que le bouton est pressé.

Au début, l'image réelle a sa propriété visible définie sur false; Je ne veux pas que le gestionnaire affiche quoi que ce soit avant que les données soient toutes là.

Une fois le bouton enfoncé, le paramètre Session requis contenant l'objet nécessaire est ajouté et la page est actualisée à l'aide de Server.Transfer. Lorsque la méthode Page_load détecte que le paramètre Session a été correctement défini, il définit le paramètre Visible sur l'image sur true. Ensuite, le gestionnaire se déclenche et génère l'image. Jusqu'ici tout va bien ... Cependant, si l'utilisateur sélectionne maintenant quelque chose de différent de la liste et appuie sur le bouton, malgré l'envoi de l'objet correct dans la session, l'image ne sera pas mise à jour. En fait, le gestionnaire ne lancera même pas (si je mets un point d'arrêt là-dedans). Je dois fermer la fenêtre du navigateur et le rouvrir pour que cela fonctionne.

Des idées sur ce qui pourrait être la cause d'un tel comportement?

Je soupçonne que la réponse est très simple, et je ne sais pas juste quelque chose de fondamental ASP (ou gestionnaires) ...

Répondre

4

L'image est probablement mises en cache sur le client et le navigateur n'a pas pris la peine de demande une nouvelle version du serveur. Au début de la méthode ProcessRequest ajouter:

context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
+0

me battre à elle .. –

Questions connexes