2010-01-28 14 views
6

OK, prima un po 'di background: ho una pagina che mostra il numero di visite (o visualizzazioni) di qualsiasi articolo selezionato. La procedura di contatore di visite che si chiama ad ogni caricamento della pagina cioèIl caricamento della pagina si attiva due volte su Firefox

if (Request.QueryString.HasKeys()) 
{ 
    // get item id from icoming url e.g details.aspx?itemid=26    

    string itemid = Request.Params["itemid"]; 

    if (!Page.IsPostBack) 
    { 
     countHit(itemid); 
    } 
} 

Il problema: la mia aspettativa era che il contatore sarebbe aumentato di 1 ad ogni caricamento della pagina, ma i contatori sulla mia DataList e FormView sono sempre dietro e fece un passo di 2 cioè

anziché 1, 2, 3, 4, è 0, 2 , 4, 6.

Sembra che il caricamento della pagina stia sparando due volte. Più tardi ho scoperto che questo accade solo quando si utilizza Mozilla Firefox. La pagina si comporta bene con altri browser come IE

Questo diventa abbastanza frustrante.

+0

Si consiglia di d/l Fiddler, che è un proxy http e vedere cosa succede in realtà tra il server Web e browser. –

+0

..OK ha fatto qualche ricerca ... sembra che FF stia per qualche ragione a ripetere la stessa richiesta due volte. –

risposta

23

Ho visto Page_Load sparare due volte se si dispone di un <asp:Image> o di un <img runat="server"> nella pagina che non ha l'attributo src specificato.

Potrebbe valere la pena dare un'occhiata.

+0

+1 grazie un milione! Per qualche motivo FF sente la necessità di ripetere una richiesta se un tag img manca dell'attributo src! –

+0

Sì, è strano, va bene. Sono contento di poterti aiutare. –

+0

sembra che tu abbia trascorso molto tempo su ASP.NET, +1 –

0

Il motivo più probabile è che chiami la procedura due volte.

+0

L'ho pensato anch'io. Ma non c'è niente che sto facendo a page_load oltre a impostare il parametro @id per la mia origine dati sql. –

+0

Prova a registrare la chiamata in modo che venga visualizzata ogni volta che viene chiamata. –

+0

Non ci crederai, ma sembra che il problema si trovi con Mozilla Firefox. La pagina funziona perfettamente in IE e in altri browser ... sembra che mozilla stia facendo chiamate duplicate al server !! ... Qualcuno ha mai incontrato uno scenario simile? (FF che fa chiamate duplicate) –

1

Provare a disattivare FireBug se è abilitato.

+0

Ho trascorso 3 ore cercando di trovare la risposta a questo. Grazie –

0

In genere il motivo per cui il caricamento della pagina viene generato due volte è che AutoEventWireup = true è in ascx/aspx E si associa esplicitamente l'evento Load al metodo Page_Load (nel codebehind).

Ma allora dovresti vedere questo comportamento in tutti i browser.

3

Sono consapevole delle seguenti cose.

Se si dispone di controllo img con una stringa vuota assegnata all'attributo src. Si può essere dimenticato di assegnare imageurl o si desidera assegnare imageurl nel codice dietro in base a una condizione e tale condizione non viene mai eseguita e si finisce per essere una stringa vuota assegnata all'attributo src quando ASP.Net esegue il rendering della pagina.

Se si dispone di una stringa vuota assegnata all'attributo href al collegamento html per lo stylsheet.

Se si dispone di attributo src vuoto impostato su script.

per ulteriori informazioni consultare questo articolo. http://patelshailesh.com/index.php/page_load-event-fires-twice-with-firefox-only

2

Ho avuto anche questo problema .. nel mio caso firebug stava causando la chiamata extra.

0

Anche l'etichetta di ancoraggio con href vuoto, href="", è un problema. Utilizzare href="#" ovunque l'URL non sia richiesto in un tag di ancoraggio.

+0

In un'altra pagina avevo incorporato il tag Object con src vuoto attributo, cioè src = "". Anche questo è un problema. Quindi posso concludere che qualsiasi riferimento url vuoto, sia esso src, url, href ecc sono i colpevoli :) – anand

2

Abbiamo avuto un problema simile in cui il violinista ha mostrato che una delle nostre pagine veniva caricata due volte. Questo è successo solo in Firefox e Chrome.La soluzione era quella di cambiare:

background-image:url(''); 

a

background-image:none; 
1

ho avuto anche questo problema. Ho scoperto che la barra degli strumenti antivirus di AVG su firefox fa un altro colpo su quella pagina e ho avuto 2 hit per refresh.

Basta andare su Strumenti> Componenti aggiuntivi e disattivare la barra degli strumenti di AVG, se disponibile. Altrimenti potrebbe essere causato da un'altra estensione come quella aggiunta da antivirus o altri software.

Buona fortuna

Problemi correlati