2009-06-11 13 views
1

Ich habe eine App, die ein Bild für die angegebene Benutzer-ID hochzieht. Ich habe das Bild-Tag in einem Update-Panel in einem AJAX TabContainer Steuerelement verschachtelt. Ich habe die ImageUrl auf "~/ImageHandler.ashx" und die ImageHandler.ashx greift die Benutzer-ID aus der Sitzungsvariablen userID.AJAX HTTPHandler nicht aktualisieren Bild

Mein Problem ist das: Wenn der erste Benutzer geladen wird, wird das richtige Bild gezogen, aber nachfolgende Benutzer ziehen kein neues Bild hoch. Das Bild vom ersten Benutzer bleibt erhalten. Es sieht also so aus, als wäre der imageUrl gesetzt, wenn der erste Benutzer geladen und nicht mehr berührt wird. Wie kann ich das Bild aktualisieren, wenn ich einen neuen Benutzer abrufe?

+0

ist es ein geänderter Benutzer in derselben Browsersitzung? – RSolberg

Antwort

2

Es klingt wie Ihr Browser Caching ist. Versuchen Sie vielleicht, das ImageUrl auf '~/ImageHandler.ashx? User = <% = userId%>' oder etwas ähnliches einzustellen. Ich nehme an, dass Ihr ImageHander.ashx das Argument ignoriert, aber der Browser wird erkennen, dass die URL anders ist, und wird versuchen, sie für jeden neuen Benutzer erneut abzurufen.

+0

Das hat wunderbar funktioniert. Ich habe das ImageUrl im Code mit der von dir vorgeschlagenen URL hinterlegt und es funktioniert jetzt einwandfrei! Ich danke dir sehr! – swolff1978

+0

danke @StriplingWarrior, ich habe die von dir erwähnte Technik benutzt und es funktioniert wirklich. Groß!!!. –

0

Verwenden Sie FireBug, um zu überprüfen, ob das neue Image angefordert wird. Wenn nicht, stellen Sie sicher, dass das von ImageHandler.ashx zurückgegebene Bild nicht zwischengespeichert wird. Sie können dies tun, indem Sie die Header-Parameter in FireBug betrachten. Sie möchten, dass die Antwort sofort abläuft, oder stellen Sie sicher, dass sie auf Kein Cache gesetzt ist.

Verschiedene Programmierparadigmen haben unterschiedliche Methoden zum Setzen des Headers. Wenn Sie den Netzwerkverkehr in FireBug überprüfen, werden Sie die Ursache des Problems kennen. Eine einfache Lösung wurde bereits vorgeschlagen, Abfrageparameter zu verwenden, um jeden Aufruf eindeutig zu machen.

0

Es hat mir sehr geholfen. Ich hatte das gleiche Problem. Ich wurde Bild von mermorystream von Sitzung U gerade gelöscht Cache & es funktioniert.