Warum wird Page_Load nicht ausgelöst, nachdem ich mit ASP.NET von einer anderen Seite zurückgekommen bin - ergo epische Verlegenheit :)

8

Nehmen wir an, ich habe zwei Seiten auf derselben ASP.NET C # -Website.

  • Page1.aspx erledigt Dinge im Page_Load-Ereignis
  • Ich navigiere zu Page2.aspx über das Menü
  • Page2.aspx macht einige Dinge dann Response.Redirect zurück zu Page1.aspx
  • Page1.aspx kann dieses Mal das Ereignis Page_Load nicht ausführen, weil es nie ausgelöst wird.

Ich habe versucht, den Cache deklarativ auszuschalten, habe versucht, true für endResponse in meiner Weiterleitung zu verwenden ... nichts scheint einen Unterschied zu machen.

Macht euch nichts aus! Ich bin ein Idiot! Mit Visual Studio Dev Localhost wurde die Redirect auf die Live-Seite umgeleitet! :)

    
G Berdal 17.02.2010, 14:12
quelle

7 Antworten

13

Der Grund für die Ausführung der Seite hat keinen Einfluss auf den Seitenzyklus, das Load-Ereignis immer wird ausgelöst, wenn die Seite ausgeführt wird.

Wenn also Page_Load manchmal nicht ausgeführt wird, liegt das daran, dass die Seite zwischengespeichert ist und nicht auf dem Server ausgeführt wird. Die Seite kann im Browser, in einem Router irgendwo auf dem Weg oder auf dem Server zwischengespeichert werden, der das Seiten-Caching auf der Serverseite verwendet.

Wenn Sie das Seiten-Caching der Serverseite für die Seite nicht aktiviert haben, wird es im Browser oder im Netzwerk zwischengespeichert. Sie können Cache-Einstellungen verwenden, um dies zu eliminieren:

%Vor%

Dadurch wird verhindert, dass die Seite unter normalen Umständen zwischengespeichert wird. (Vergewissern Sie sich auch, dass sich Ihr Browser nicht im Offline-Modus befindet. Dann wird alles im Cache verwendet, unabhängig von den Cache-Einstellungen.)

    
Guffa 17.02.2010, 14:27
quelle
4

Wenn Sie mit der Zurück-Taste zu einer Seite navigieren, wird die Seite aus dem Speicher geladen und keine Anfrage an den Server gesendet.

Sie können dies mit Fiddler bestätigen.

Ich bin nicht sicher, ob dies in allen Browsern zutrifft.

    
SLaks 17.02.2010 14:15
quelle
2

Wenn Sie umleiten, ist es möglich, dass der Client die Antwort zwischenspeichert. Um dies zu umgehen, können Sie einen zusätzlichen Abfrageparameter hinzufügen, der einfach die Zeit enthält.

Dies reicht normalerweise aus, um die Cache-Mechanismen der meisten Seiten zu umgehen.

    
NotMe 17.02.2010 14:17
quelle
1

Versuchen Sie es mit Server.Transfer anstelle von Response.Redirect.

Der Client sieht die Änderung der URL nicht, dies ist jedoch abhängig von Ihren Anforderungen nicht von Bedeutung

    
D3no 17.02.2010 14:31
quelle
0

Ich hatte das gleiche Problem und stellte fest, dass dies für mich funktioniert: (Fügen Sie dies im Abschnitt Page_Load hinzu)

%Vor%

und dann füge ich Session ["RELOAD"]="1" hinzu, direkt nachdem es den Code ausgeführt hat, den ich ausführen möchte, um zu verhindern, dass es immer wieder aktualisiert wird. Funktioniert wie ein Zauber.

    
EBarro 11.02.2011 20:18
quelle
0

Das Ändern von VS vom Debug- in den Release-Modus funktionierte für mich ....

    
vinayak hegde 20.07.2015 10:42
quelle
0

Bitte führen Sie den folgenden Code aus, um den Seitencache in Firefox zu deaktivieren.

%Vor%

Wenden Sie dies beim Laden der Seite der Masterseite an.

    
Vikas Ranjan Rai 27.08.2015 16:53
quelle