Ärger mit einem Bild, oder: Woher kommt der zweite Request?
Bei den Entwicklung eines Controls wurde nach ein paar Änderungen die <Control>.OnPreRender-Methode nach scheinbar einem Request (Seitenanforderung) zweimal aufgerufen.
Da muss also irgendwas faul sein, denk sich Peter und nimmt den Firebug / Fiddler zur Hand um den HTTP-Verkehr zu überprüfen.
Schlussendlich kam dabei raus, dass zuerst der vom Browser ausgelöste Request stattfindet und später noch ein anderer auf die gleiche Seite nachzieht.
Also zwei GET-Requests auf dieselbe Seite obwohl diese nur einmal angefordert wurde, wieso?
Mein Verdacht fiel auf Javascript / AJAX, wobei dort in den meisten Fällen POST zum Einsatz kommt.
Nach vielem Eingrenzen und Ausprobieren habe ich schliesslich herausgefunden woran das lag und möchte das euch natürlich nicht vorenthalten.
Das Control enthielt ein Image-Control und die ImageUrl-Eigenschaft wurde nicht gesetzt.
Aufgrund dieses Codes bzw. _weil_ das src-Attribut des img-Tags leer war:
<img src=”” alt=”Peter Bucher” />
…wurde in Firefox noch einmal die aktuelle Seite per GET angefordert, das sieht in Fiddler dann so aus:
Also einen weiteren Request auf “/<Aktuelle_Seite>”.
Im Internet Explorer (7) passiert bei einem leeren img-Tag folgendes:
Also einen Request auf den Root “/” und anschliessend wird dem Browser mitgeteilt doch bitte die entsprechende Standardseite zu laden, also bspw. “default.aspx” oder bei einer geschützten Seite - wie hier – die Login.aspx.
Gut zu wissen… und auch gut das es sowas wie Fiddler oder Firebug gibt.