response.redirect

___ answer2281402 ___

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.)

    
___ qstntxt ___

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! :)

    
___ answer2281442 ___

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

    
___ answer4973612 ___

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.

    
___ answer31514448 ___

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

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123aspnet ___ ASP.NET ist ein Framework für die Entwicklung von Microsoft-Webanwendungen, mit dem Programmierer dynamische Websites, Webanwendungen und Webdienste erstellen können. Es ist nützlich, dieses Tag in Verbindung mit dem Typ des Projekttyps zu verwenden, z. [asp.net-mvc], [asp.net-webforms] oder [asp.net-web-api]. Verwenden Sie dieses Tag NICHT für Fragen zu ASP.NET Core - verwenden Sie stattdessen [asp.net-core]. ___ qstnhdr ___ Warum wird Page_Load nicht ausgelöst, nachdem ich mit ASP.NET von einer anderen Seite zurückgekommen bin - ergo epische Verlegenheit :) ___ answer2281319 ___

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.

    
___ tag123events ___ Ein Ereignis ist eine Möglichkeit für eine Klasse, Benachrichtigungen an Listener zu senden, wenn eine bestimmte Sache passiert. ___ answer32255269 ___

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.

    
___ tag123responseRedirect ___ Eine ASP-Methode, bei der der Browser den Client an eine andere URL umleitet. ___ answer2281335 ___

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.

    
___
7
Antworten

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

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...
17.02.2010, 14:12