Methode zur Aufrechterhaltung der Sitzung: Manche Leute sagen, dass man session.timeout=-1 oder eine Zahl kleiner als 0 setzen soll. Diese Methode ist definitiv nicht möglich. Die Sitzungsberechnungszeit wird in Minuten angegeben und muss eine ganze Zahl größer oder gleich 1 sein. Jemand anderes sagte, ich solle session.timeout=99999 setzen. Auch das funktioniert nicht, die Sitzung ist zeitlich begrenzt. Nach dem Test habe ich festgestellt, dass der Maximalwert 24 Stunden beträgt, was bedeutet, dass das Maximum, das Sie haben können, session.timeout = 1440 ist und 1441 nicht zulässig ist, haha. Meine Testumgebung: win2003+IIS6.0+ASP3.0.
Daher ist es unmöglich, dafür zu sorgen, dass die Sitzung niemals abläuft, indem die Ablaufzeit von session.timeout festgelegt wird. Das Schreiben in Cookies ist eine bessere Methode. Es gibt viele solcher Tutorials im Internet, daher werde ich hier nicht näher darauf eingehen! Eine andere Methode besteht darin, einen versteckten Iframe auf der Seite einzurichten, auf der die Sitzung aufrechterhalten werden soll. Aktualisieren Sie ab und zu (diese Zeit ist kürzer als die session.timeout-Zeit) die leere Seite im Frame! Die Implementierungsmethode ist wie folgt:
Fügen Sie Folgendes zur Sitzungsseite hinzu, auf der Sie es behalten möchten:
Kopieren Sie den Codecode wie folgt:
<iframe width=0 height=0 src=/blog/SessionKeeper.asp></iframe>
Erstellen Sie die Datei SessionKeeper.asp im selben Verzeichnis. XML/HTMLCode kopieren
Kopieren Sie den Codecode wie folgt:
<html>
<Kopf>
<meta http-equiv=Refresh content=900000;url=sessionKeeper.asp>
<!--Aktualisieren Sie sich alle 900 Sekunden, um mit dem Server zu kommunizieren und zu verhindern, dass die Sitzung verloren geht-->
</head>
</html>
Diese Methode ist relativ häufig und es gibt eine andere Methode, die der oben genannten ähnelt, jedoch kein Meta verwendet, um verschachtelte Iframes automatisch zu aktualisieren. Er verwendet javascript:window.setTimeout(functionname(),10000); um eine Funktion in regelmäßigen Abständen automatisch aufzurufen. Natürlich muss die Funktion immer noch eine Verbindung zu einer leeren Datei herstellen. Die spezifische Methode ist wie folgt:
Hinzufügen: JavaScript-Kopiercode in die zu pflegende Sitzung
Kopieren Sie den Codecode wie folgt:
<script id=Back language=javascript></script>
<Skriptsprache=Javascript>
Funktion keepsession(){
document.all[Back].src=/blog/SessionKeeper.asp?RandStr=+Math.random();
//RandStr=Math.random dient hier nur dazu, den Wert von back.src jedes Mal unterschiedlich zu machen, um zu verhindern, dass die Aktualisierung derselben Adresse ungültig wird.
window.setTimeout(keepsession(),900000); //Selbst alle 900 Sekunden aufrufen
}
keepsession();
</script>Erstellen Sie auf diese Weise einfach eine sessionKeeper.asp-Datei mit leerem Inhalt im selben Verzeichnis!
Das Problem ist nicht gelöst: Es sollte kein Problem mit der Aufrechterhaltung der Sitzung durch die obige Methode geben. Der Standardwert von IIS zum Löschen der Sitzung ohne Anfrage ist 20 Minuten. Die Zeit, die ich für jeden interaktiven Dienst festgelegt habe, ist viel kürzer. Aber bei mir dauert es ungefähr einen Tag. Nach langer Zeit verschwindet die Sitzung immer noch ohne Grund! gedrückt.
Später habe ich viele Stellen im Internet durchsucht und schließlich die Antwort gefunden: Es stellte sich heraus, dass IIS zum Schutz des Servers ein Recyclingkonzept hat! Nachdem ich lange getestet hatte, bekam ich endlich ein allgemeines Verständnis (lacht mich nicht aus^-^). Werfen wir zunächst einen Blick darauf, wo dieses Recycling angesiedelt ist.
Starten Sie den IIS-Manager->Anwendungspool->Rechtsklick->Eigenschaften->Recycling-Registerkarte. Es gibt ein Element, das standardmäßig funktioniert, nämlich das erste Element: Recycle Work Process (Minuten). Der Standardwert beträgt ca. 1740 Minuten 29 Stunden. Was meint er? Mein persönliches Verständnis: Alle laufenden Sitzungen werden 1740 Minuten nach session.timeout automatisch gelöscht. Dieser Wert kann auf maximal 4.000.000 eingestellt werden, was etwa mehr als 2.700 Tagen entspricht! Ich habe es direkt storniert, ohne dass er es automatisch recycelt hat! Das Problem ist endlich gelöst.
Darüber hinaus gibt es in diesem Eigenschaftendialogfeld mehrere weitere Elemente:
Der zweite Artikel sollte recycelt werden, wenn die Anzahl der verbundenen Benutzer eine bestimmte Anzahl überschreitet.
Der dritte Punkt besteht darin, es zu einem bestimmten Zeitpunkt automatisch zu recyceln.
Fahren Sie auf der Registerkarte „Leistung“ den Arbeitsprozess herunter, nachdem er für diesen Zeitraum inaktiv war. Hier wird die IIS-Standard-Session-Timeout-Zeit festgelegt. Der Standardwert beträgt 20 Minuten. Der Maximalwert kann hier auch auf 4000000 festgelegt werden, was sich von der Einstellung des Maximalwerts von session.timeout auf 1440 auf der ASP-Seite unterscheidet. Ich habe nicht getestet, ob es möglich sein sollte, hier einen Wert über 1440 festzulegen. Warum kann also der Maximalwert von session.timeout auf der ASP-Seite nur 1440 betragen, er aber in den Eigenschaften von IIS so groß eingestellt werden? Es sollte ein Schutzmechanismus sein: Jeder Benutzer kann den Wert von session.timeout auf der ASP-Seite festlegen, aber nur der Administrator kann ihn in IIS festlegen. Die beiden haben unterschiedliche Berechtigungen, daher ist der Einstellungsbereich unterschiedlich.