session iis cookies asp-classic iis-6

ASP clásico: ASPSESSIONID múltiple en las cookies



iis asp-classic (6)

En el archivo 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

Tengo un problema con una página asp clásico y no puedo resolverlo desde 3 días.

La página funciona con Sesiones: a veces sucede que la cookie ASPSESSIONID se establece dos veces en Request.ServerVariables ("HTTP_COOKIE"). Esto hace que ASP-Page salte entre las dos sesiones cuando se actualiza la página.

He escrito una página de prueba que muestra el SessionId actual, el software del servidor y el valor de HTTP_COOKIE.

Muestra de salida:

ID de sesión: 308542840

Tiempo de espera de la sesión: 20 minutos

Software de servidor: Microsoft-IIS / 6.0

HTTP_COOKIE: ASPSESSIONIDQCBATRAD = MBHHDGCBGGBJBMAEGLDAJLGF; ASPSESSIONIDQCCDTTCB = PGHPDGCBPLKALGGKIPOFIGDM

¿Por qué hay dos ASPSESSIONIDs? Cuando actualizo la página, muestra aleatoriamente una de las dos ID de sesión.

Aquí hay un screencast que muestra el problema en IE9: http://prinz-alexander.at/asp_test.avi

Este error a menudo ocurre en ie8 y ie9.

Haga lo siguiente para recrear el problema:

  1. Cerrar completamente IE8 o IE9
  2. Inicie IE8 o IE9 y abra http://www.pfiffikus.at/pfiffikus/tests/
  3. Inmediatamente después de cargar la página, actualice la página varias veces

Si repite estos pasos, al azar (no siempre) HTTP_COOKIE se rellena con dos ASPSESSIONID ID diferentes.

El archivo asp test solo muestra los valores de mentiod, no ocurre nada más en el código fuente.

Este es el código del archivo de prueba asp:

<% 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")) %>

¿Cómo puedo evitar múltiples ASPSESSIONIds en las cookies?

¡Gracias por cualquier ayuda!


Usted ha asignado un valor en su sesión del usuario. Trate de buscar su sesión de esta manera y asigne diferentes valores únicos a cada usuario

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


Este problema también me molestó durante mucho tiempo. Y no puedo resolverlo.

No es nada del negocio de los navegadores. Mi Chrome, Firefox, IE tienen este problema.

A veces puedo ver más de 20 cookies ASPSESSIONIDXXXX en una página.

Finalmente, debo usar javascript para borrar el antiguo ASPSESSIONID *** y conservar el último.

function clearASPSESSIONID(){ var cks = document.cookie.match(//b(ASPSESSIONID[A-Z]+)(?==)/g), lskey = ''oldASPSESSIONID-''+location.protocol+''//''+location.host, old = window.localStorage ? localStorage.getItem(lskey) : '''', keep, i; for(i=0;i<cks.length;i++){ if((old && old.indexOf(cks[i])<0) || i==cks.length-1){ keep = cks[i]; } } for(i=0;i<cks.length;i++){ if(keep != cks[i]){ document.cookie = cks[i] + ''=; expires=Thu, 01 Jan 1970 00:00:01 GMT;''; } } if(window.localStorage){ localStorage.setItem(lskey, keep ? keep : ''''); } } clearASPSESSIONID();


Vaya a la configuración avanzada del conjunto de aplicaciones y configure "Procesos máximos de trabajo" en 1.


Pude eliminar esas cookies con Javascript.

Simplemente agregue el siguiente script al final de la página de inicio de sesión. Esto eliminará todas las cookies "ASPSESSIONIDXXXXXXX" antes de que el usuario inicie sesión en el sitio web:

<script type="text/javascript"> //Clear any session cookies (function(){ var cookiesArr = document.cookie.split("; "); for (var i = 0; i < cookiesArr.length; i++) { var cItem = cookiesArr[i].split("="); if (cItem.length > 0 && cItem[0].indexOf("ASPSESSIONID") == 0) { deleteCookie(cItem[0]); } } function deleteCookie(name) { var expDate = new Date(); expDate.setTime(expDate.getTime() - 86400000); //-1 day var value = "; expires=" + expDate.toGMTString() + ";path=/"; document.cookie = name + "=" + value; } })(); </script>


Tal vez más tarde, pero podría ser útil ya que no hay una respuesta aceptada.

En el grupo de aplicaciones, en las opciones de reciclaje, verifique si no recicla su aplicación demasiado pronto o terminará con un ASPSESSIONIDXXXXXXX por cada nueva aplicación que reaparezca.

Hay varias condiciones de reciclaje. Establecí el "número mínimo de solicitudes" en 1 por error y obtuve un ASPSESSIONID para cada solicitud