IIS 6 y Variables Session

21/04/2004 - 00:57 por Juan C. Santaella | Informe spam
Hola, se me está presentando el siguiente problema con IIS 6 y ASP ( con IIS
5 funciona perfectamente):
La página de entrada a mi aplicación consiste en un formulario que recibe
los datos de acceso
del usuario y los consulta con la base de datos SQL Server para
autenticarlo.
Si el usuario está autorizado se almacenan sus datos en variables del tipo
session y se redirecciona
el mismo a la página de inicio con las opciones disponibles para ese
usuario. El problema es que al pasar a la
página de inicio se pierden los valores de las variables
session --session("authenticated")--, no permitiendo entrar a la
página de inicio.
En IIS6 habilité en WEB SERVICE EXTENSIONS: Active Server Pages
A continuación les muestro el código:

PÁGINA DE ENTRADA: (default.asp)

dim strconn
strconn = application("conn")
set rs = server.createobject("ADODB.Recordset")
sql = "SELECT USERINFO.MemberID, USERPASS.Role, USERPASS.Zona "
sql = sql & "FROM USERINFO INNER JOIN USERPASS ON USERINFO.MemberID USERPASS.MemberID "
sql = sql & "WHERE USERINFO.ZoneName ='" & Request("ZoneName") & "' "
sql = sql & "AND USERPASS.Password = '" & Request("Password") & "'"
rs.open sql, strconn, 2, 2
if rs.EOF then
Response.Redirect "default.asp?status=1"
else 'se autentica al usuario para el resto de la session.
session("authenticated") = true
session("MemberID") = rs(0) 'código de usuario
session("Role") = rs(1) 'string con los derechos del usuario
zona = rs(2)'código de zona a la que pertenece: Internet o
Administración
Response.Redirect "administrador/inicio.asp"
end if

-
PÁGINA DE INICIO: (administrador/inicio.asp)
<%

'se verifica si el usuario está autenticado.
If session("authenticated") <> true then
Response.Redirect "../default.asp"
end if

%>

<html>
<body>
-código html
</body>
</html>

Cualquier ayuda es bienvenida. Muchas gracias de antemano,
JC
 

Leer las respuestas

#1 Miguel González
21/04/2004 - 12:05 | Informe spam
Hola Juan!

El código que envias me parece correcto y debería funcionar.

Cosas que se me ocurren:

- Comprobar el estado (y contenido) de las variables de sesión mediante un
"Response.Write":

<%Response.Write Session("authenticated")%>

- Verificar que el navegador tiene las cookies activadas para ese sitio web.

- Revisar el tiempo de caducidad de las sesiones en el IIS (por defecto son
20 minutos).

- Revisar el archivo "global.asa", no sea que haya algo que "vacíe" las
variables de sesion.

- Probar otro tipo de sentencia "If", quizás más afinada:

<%If Not Session("authenticated") Then%>

- Y ya que tienes IIS6... utilizar "Server.Transfer" en vez de
"Response.Redirect". Te copio la recomendación de MS:

"Server.Transfer acts as an efficient replacement for the Response.Redirect
method. Response.Redirect specifies to the browser to request a different
page. Because a redirect forces a new page request, the browser makes two
requests to the Web server, so the Web server handles an extra request. IIS
5.0 introduced a new function, Server.Transfer, which transfers execution to
a different ASP page on the server. This avoids the extra request, resulting
in better overall system performance, as well as a better user experience."
http://msdn.microsoft.com/library/d...eromtr.asp


Saludos!
Miguel


"Juan C. Santaella" escribió en el mensaje
news:Oh%
Hola, se me está presentando el siguiente problema con IIS 6 y ASP ( con


IIS
5 funciona perfectamente):
La página de entrada a mi aplicación consiste en un formulario que recibe
los datos de acceso
del usuario y los consulta con la base de datos SQL Server para
autenticarlo.
Si el usuario está autorizado se almacenan sus datos en variables del tipo
session y se redirecciona
el mismo a la página de inicio con las opciones disponibles para ese
usuario. El problema es que al pasar a la
página de inicio se pierden los valores de las variables
session --session("authenticated")--, no permitiendo entrar a la
página de inicio.
En IIS6 habilité en WEB SERVICE EXTENSIONS: Active Server Pages
A continuación les muestro el código:

PÁGINA DE ENTRADA: (default.asp)

dim strconn
strconn = application("conn")
set rs = server.createobject("ADODB.Recordset")
sql = "SELECT USERINFO.MemberID, USERPASS.Role, USERPASS.Zona "
sql = sql & "FROM USERINFO INNER JOIN USERPASS ON USERINFO.MemberID > USERPASS.MemberID "
sql = sql & "WHERE USERINFO.ZoneName ='" & Request("ZoneName") & "' "
sql = sql & "AND USERPASS.Password = '" & Request("Password") & "'"
rs.open sql, strconn, 2, 2
if rs.EOF then
Response.Redirect "default.asp?status=1"
else 'se autentica al usuario para el resto de la session.
session("authenticated") = true
session("MemberID") = rs(0) 'código de usuario
session("Role") = rs(1) 'string con los derechos del usuario
zona = rs(2)'código de zona a la que pertenece: Internet o
Administración
Response.Redirect "administrador/inicio.asp"
end if

PÁGINA DE INICIO: (administrador/inicio.asp)
<%

'se verifica si el usuario está autenticado.
If session("authenticated") <> true then
Response.Redirect "../default.asp"
end if

%>

<html>
<body>
-código html
</body>
</html>

Cualquier ayuda es bienvenida. Muchas gracias de antemano,
JC







Preguntas similares