Classic ASP: Mehrere ASPSESSIONID in cookies
Ich habe ein problem mit einer klassischen asp-Seite, und ich kann Sie einfach nicht lösen es seit 3 Tagen.
Die Seite arbeitet mit Sessions - manchmal passiert es, dass das ASPSESSIONID-cookie gesetzt ist zweimal in der Anfrage.ServerVariables("HTTP_COOKIE"). Dies bewirkt, dass die ASP-Seite zu springen, zwischen zwei Sitzungen, wenn die Seite aktualisiert wird.
Ich geschrieben habe eine Test-Seite, die-Ausgänge der aktuellen SessionId, die Server-Software und der COOKIE-Wert.
Beispiel-Ausgabe:
Session-ID: 308542840
Session-Timeout: 20 Minuten
Server Software: Microsoft-IIS/6.0
COOKIE: ASPSESSIONIDQCBATRAD=MBHHDGCBGGBJBMAEGLDAJLGF; ASPSESSIONIDQCCDTTCB=PGHPDGCBPLKALGGKIPOFIGDM
Warum gibt es zwei ASPSESSIONIDs?
Wenn ich die Seite aktualisieren, dann es nach dem Zufallsprinzip Ausgänge eine der beiden Session-IDs.
Hier ist ein screencast, das zeigt das problem im IE9:
http://prinz-alexander.at/asp_test.avi
Dieser Fehler tritt Häufig auf im ie8 und ie9.
Nur Folgendes tun um das Problem zu reproduzieren:
- Ganz in der Nähe IE8 oder IE9
- Starten Sie IE8 oder IE9 und öffnen http://www.pfiffikus.at/pfiffikus/tests/
- Sofort nachdem die Seite geladen wird, aktualisieren Sie die Seite mehrere Male
Wenn Sie wiederholen Sie diese Schritte dann zufällig (nicht immer) das COOKIE ist gefüllt mit zwei verschiedenen ASPSESSIONIDs.
Asp-test-Datei ist nur bestens die mentiod Werte, nichts anderes passiert in den source-code.
Dies ist der code der asp-test-Datei:
<% If trim(Session("test_val")) = "" Then
Dim my_num
Randomize
number = Int((rnd*1000))+1
Session("test_val") = number
End If
%>
<b>Session ID:</b>
<% response.write(Session.SessionId) %><br /><br />
<b>Session("test_val"):</b>
<% response.write(Session("test_val")) %><br /><br />
<b>Session Timeout:</b>
<% response.write(Session.Timeout) %> minutes<br /><br />
<b>Server Software:</b>
<% response.write(Request.ServerVariables("SERVER_SOFTWARE")) %><br /> <br />
<b>HTTP_COOKIE:</b> <% response.write(Request.ServerVariables("HTTP_COOKIE")) %>
Wie kann ich vermeiden, dass mehrere ASPSESSIONIds in cookies?
Vielen Dank für jede Hilfe!!!
- nach ein paar codes, wo Sie zugewiesen haben, Ihre Sitzung.
- Ich habe den code Hinzugefügt, um meine anfängliche Frage...
- Sie haben einen web-Garten (app-pool mit mehr als 1 Prozess) konfiguriert?
- Ich bin nur Benutzer von dem Webhoster, aber ich habe keinen administrativen Zugang. Kann ich trotzdem herausfinden, ob ein web garden ist konfiguriert? Warum konnte in diesem Fall das problem und was wäre die Konfiguration würdet Ihr vorschlagen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
War ich in der Lage, entfernen Sie diese cookies mit Javascript.
Nur hinzufügen, dass nächste Skript an das Ende der login-Seite.
Dies wird entfernen Sie alle "ASPSESSIONIDXXXXXXX" cookies, bevor Benutzer login zur website:
Dieses Problem auch beunruhigt mich, für eine lange Zeit. Und ich habe es nicht lösen können.
Es ist keine Browser-Geschäft. Meine Chrome, Firefox, IE alle haben dieses Problem.
Manchmal kann ich sehen, 20+ ASPSESSIONIDXXXX cookies auf einer Seite.
Schließlich muss ich javascript deaktivieren Sie das alte ASPSESSIONID*** und halten Sie die Letzte.
Gehen Sie auf Application pool "erweiterte Einstellungen" und setzen Sie "Maximum-Worker-Prozesse" auf "1".
Können Sie die URL-Rewrite-mod zum umbenennen der session-cookie, wenn es gesetzt ist-und Nutzung eines inbound-rewrite-Regel zurückkehren, zurückkehren zu können. Mehrere session-cookies auftreten, wenn Sie den Namen der session-ID ändert, sondern indem das session-cookie ein set-name und darunter die ID im cookie selbst wird es immer nur eine session-cookie zu einem Zeitpunkt.
Verwenden Sie diese rewrite-Regeln im web.config ändern
in
dann wieder es wieder zurück auf eine eingehende Anfrage (es kann also noch Lesen IIS):
In global.asa-Datei:
Vielleicht später, aber könnte nützlich sein, als es noch keine akzeptierte Antwort.
In der Anwendung-pool, auf recycling-Optionen, überprüfen Sie, ob Sie nicht
recyceln Sie Ihre Anwendung zu früh, oder Sie wird beendet mit einer
ASPSESSIONIDXXXXXXX für jede neue Anwendung, die Sie respawnen.
Gibt es mehrere recycling-Bedingungen.
Ich "minimale Anzahl von Anfragen" auf " 1 " versehen habe
ein ASPSESSIONID für jede Anforderung
Haben Sie einen Wert zugewiesen in der Sitzung des Benutzers. Versuchen zu Holen Ihr holt Ihre session, wie diese und ordnen Sie den verschiedenen individuellen Werte zu jedem Benutzer