ASP classico: più ASPSESSIONID nei cookie

Ho un problema con una classica pagina asp e non riesco a risolverlo da 3 giorni.

La pagina sta funzionando con Sessioni – a volte capita che il cookie ASPSESSIONID sia impostato due volte nella Request.ServerVariables (“HTTP_COOKIE”). Ciò fa sì che ASP-Page salti tra le due sessioni quando la pagina viene aggiornata.

Ho scritto una pagina di test che restituisce l’attuale SessionId, il Software Server e il valore HTTP_COOKIE.

Uscita di esempio:


ID sessione: 308542840

Timeout sessione: 20 minuti

Software server: Microsoft-IIS / 6.0

HTTP_COOKIE: ASPSESSIONIDQCBATRAD = MBHHDGCBGGBJBMAEGLDAJLGF; ASPSESSIONIDQCCDTTCB = PGHPDGCBPLKALGGKIPOFIGDM


Perché ci sono due ASPSESSIONIDs? Quando aggiorno la pagina, restituisce in modo casuale uno dei due ID di sessione.

Ecco uno screencast che mostra il problema in IE9: http://prinz-alexander.at/asp_test.avi

Questo errore si verifica spesso in ie8 e ie9.

Basta fare quanto segue per ricreare il problema:

  1. Chiudi completamente IE8 o IE9
  2. Avvia IE8 o IE9 e apri http://www.pfiffikus.at/pfiffikus/tests/
  3. Immediatamente dopo che la pagina è stata caricata, aggiorna i tempi della pagina mutiple

Se ripeti questi passaggi, in modo casuale (non sempre) il HTTP_COOKIE viene popolato con due ASPSESSIONID diversi.

Il file di test asp emette solo i valori di mentiod, nient’altro sta accadendo nel codice sorgente.

Questo è il codice del file di test asp:

 Session ID: 

Session("test_val"):

Session Timeout: minutes

Server Software:

HTTP_COOKIE:

Come posso evitare più ASPSESSIONIds nei cookie?

Grazie per qualsiasi aiuto!

Sono stato in grado di rimuovere quei cookie con Javascript.

Basta aggiungere il prossimo script alla fine della pagina di accesso. Questo rimuoverà tutti i cookie “ASPSESSIONIDXXXXXXX” prima che l’utente effettui l’accesso al sito Web:

  

Questo problema mi ha anche turbato a lungo. E non posso risolverlo.

Non è uno degli affari dei browser. My Chrome, Firefox, IE hanno tutti questo problema.

A volte riesco a vedere più di 20 cookie ASPSESSIONIDXXXX in una sola pagina.

Infine, devo usare javascript per cancellare il vecchio ASPSESSIONID *** e mantenere l’ultimo.

 function clearASPSESSIONID(){ var cks = document.cookie.match(/\b(ASPSESSIONID[AZ]+)(?==)/g), lskey = 'oldASPSESSIONID-'+location.protocol+'//'+location.host, old = window.localStorage ? localStorage.getItem(lskey) : '', keep, i; for(i=0;i 

Passare alle impostazioni avanzate del pool di applicazioni e impostare “Numero massimo di processi di lavoro” su 1.

Forse più tardi, ma potrebbe essere utile in quanto non esiste una risposta accettata.

Nel pool di applicazioni, a opzioni di riciclaggio, verificare se non si ricicla la domanda troppo presto o si termina con un ASPSESSIONIDXXXXXXX per ogni nuova applicazione che si respawn.

Ci sono diverse condizioni di riciclaggio. Ho impostato “il numero minimo di richieste” su 1 per errore e ottenuto un ASPSESSIONID per ogni richiesta

Hai assegnato un valore nella sessione dell’utente. Prova a recuperare la tua sessione di recupero in questo modo e assegna valori unici diversi a ogni utente

 <% Session("test") = "test value" a=Session("test") response.Write(a) %> 

Nel file global.asa:

 Sub Session_OnStart Dim cookie, cookies : cookies = Split(Request.ServerVariables("HTTP_COOKIE"),";") For Each cookie In cookies cookie = Trim(Split(cookie,"=")(0)) If Left(cookie,12) = "ASPSESSIONID" Then Response.AddHeader "Set-Cookie", cookie&"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/" End If Next End Sub