2010-01-28 23 views
6

OK, zuerst etwas Hintergrund: Ich habe eine Seite, die die Anzahl der Treffer (oder Ansichten) eines ausgewählten Elements zeigt. Der Zugriffszähler Prozedur, die auf jeder Seite zu laden, dhSeite lädt zweimal auf 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); 
    } 
} 

Das Problem heißt: meine Erwartung war, dass der Zähler um 1 auf jeder Seite Last erhöht werden würde, aber die Zähler auf meiner Datalist und Formview sind immer hinter und trat durch 2 dh

statt 1, 2, 3, 4 ist es 0, 2 , 4, 6.

Es scheint, dass die Seitenladung zweimal ausgelöst wird. Später entdeckte ich, dass dies nur passiert, wenn Sie Mozilla Firefox verwenden. Die Seite verhält sich gut mit anderen Browsern wie IE

Dies wird ziemlich frustrierend.

+0

Sie zu d/l Fiddler möchten, die ein HTTP-Proxy ist und sehen, was zwischen dem Web-Server und Browser tatsächlich passiert. –

+0

..OK hat etwas gegraben ... es scheint, dass FF aus irgendeinem Grund die gleiche Anfrage zweimal wiederholt. –

Antwort

23

Ich habe Page_Load zweimal gesehen, wenn Sie eine <asp:Image> oder <img runat="server"> auf der Seite haben, deren Attribut src nicht angegeben ist.

Könnte einen Blick wert sein.

+0

+1 danke eine Million! Aus irgendeinem Grund hat FF das Bedürfnis, eine Anfrage zu wiederholen, wenn ein img-Tag das src-Attribut nicht enthält! –

+0

Ja, es ist ein komisches in Ordnung. Froh, dass ich helfen konnte. –

+0

Sie scheinen viel Zeit auf ASP.NET verbracht zu haben, +1 –

0

Der wahrscheinlichste Grund ist, dass Sie die Prozedur zweimal aufrufen.

+0

Ich dachte es auch. Aber es gibt nichts, was ich bei page_load tun würde, außer den Parameter @id für meine SQL-Datenquelle zu setzen. –

+0

Versuchen Sie, den Anruf so zu protokollieren, dass Sie sehen, wann er angerufen wird. –

+0

Sie werden das nicht glauben, aber es scheint das Problem liegt bei Mozilla Firefox. Die Seite funktioniert gut in IE und anderen Browsern ... scheint Mozilla macht doppelte Aufrufe an den Server !! ... Hat je1 jemals ein solches Szenario aufgetreten? (FF macht doppelte Anrufe) –

1

Versuchen Sie, FireBug zu deaktivieren, wenn Sie es aktiviert haben.

+0

Ich verbrachte 3 Stunden damit, die Antwort darauf zu finden. Danke –

0

Normalerweise ist der Grund dafür, dass page_load zweimal ausgelöst wird, dass Sie AutoEventWireup = true im ascx/aspx UND das Load-Ereignis explizit an die Page Load-Methode binden (im Codebehind).

Aber dann sollten Sie dieses Verhalten in allen Browsern sehen.

3

Ich bin mir der folgenden Dinge bewusst.

Wenn Sie img Kontrolle mit leeren String zugewiesen src Attribut haben. Möglicherweise vergessen Sie die Zuweisung von Bildurl oder die Zuordnung von imageurl im Code basierend auf der Bedingung. Diese Bedingung wird nie ausgeführt und endete als leere Zeichenfolge, die dem src-Attribut zugewiesen wurde, wenn ASP.Net die Seite rendert.

Wenn Sie eine leere Zeichenfolge zu href-Attribut zu HTML-Link für Stylsheet zugewiesen haben.

Wenn Sie ein leeres src-Attribut auf Skript festgelegt haben.

Weitere Informationen finden Sie in diesem Artikel. http://patelshailesh.com/index.php/page_load-event-fires-twice-with-firefox-only

2

Ich hatte dieses Problem auch .. in meinem Fall Firebug verursachte den zusätzlichen Anruf.

0

Anker-Tag mit leeren href, d. H. href="" ist auch ein Problem. Verwenden Sie href="#" überall dort, wo keine URL in einem Anchor-Tag benötigt wird.

+0

In einer anderen Seite hatte ich Objekt-Tag mit leeren src eingebettet Attribut, dh src = "". Dies ist auch ein Problem. So kann ich schließen, dass jede leere URL-Referenz, sei es src, url, href usw., die Täter sind :) – anand

2

Wir stießen auf ein ähnliches Problem, wo Fiddler zeigte, dass eine unserer Seiten zweimal geladen wurde. Dies ist nur in Firefox und Chrome passiert.Die Lösung wurde ändern:

background-image:url(''); 

zu

background-image:none; 
1

ich auch dieses Problem hatte. Ich habe festgestellt, dass AVG Antivirus Toolbar auf Firefox macht einen weiteren Treffer auf dieser Seite und ich hatte 2 Treffer pro Aktualisierung.

Gehen Sie einfach zu Extras> Add-ons und deaktivieren Sie die AVG-Symbolleiste, wenn Sie sie haben. Andernfalls kann es durch eine andere Erweiterung verursacht werden, z. B. durch Antivirenprogramme oder andere Software.

Viel Glück

Verwandte Themen