Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Expiración de la Sesion

138 views
Skip to first unread message

gjaume

unread,
Jan 2, 2007, 6:09:28 AM1/2/07
to
Hola a tod@s, me encuentro trabajando en una intranet donde los
usuarios una vez identificados deben poder trabajar con un tiempo de
expiración de sesión de 8 horas. La forma en la que he programado
este requerimiento ha sido la siguiente:

En el procedimiento session_start del global.asax realizo lo siguiente:

Instancio un objeto donde almaceno todos las propiedades que deseo que
trabajen con el objeto Sesion, y en el constructor hago lo siguiente:

HttpContext.Current.Session.Timeout = 720;

El problema es que esto no funcina, la sesión expira en unos 20 min.
aproximadamente.

Alguien puede ayudarme en este tema? Como puedo averiguar el motivo por
el que me está expirando la sesión... En el web.config tengo
únicamente esto referente a la configuración de la sesión:

<sessionState timeout="720">
</sessionState>

Un saludo a tod@s,

Jose A. Fernandez

unread,
Jan 2, 2007, 6:43:34 AM1/2/07
to
Hola gjaume
Puede ser que porque el la session o mejor dicho el estado se guarda
INPROC o sea en el mismo proceso que corre tu appweb y hay motivos o
suceso que hace que la session se reinicie
Para que no tengas este problema mii recomendacion es que coloques en
modo StateServer


Mira este post anterior sobre algo similarL
- Problema variables Session

http://groups.google.com.ar/group/microsoft.public.es.dotnet.aspnet/browse_thread/thread/56bff488d0607225/?hl=es#
(mas abajo del mi firma copio parte del post anterior)

Dinos si te sirve...

Enlaces:
Configura el sessionState en modo stateServer
http://msdn2.microsoft.com/es-es/library/ms178586(VS.80).aspx

Configurar el modo de servidor de estado
http://msdn.microsoft.com/library/spa/default.asp?url=/library/spa/cpguide/html/cpconsessionstate.asp

http://es.gotdotnet.com/quickstart/aspplus/doc/stateoverview.aspx
________________________
Jose A. Fernandez


---------------------------------------------------------
POST ANTERIOR
---------------------------------------------------------
Hola Ricardo
- Se pierden todas la variables o solo algunas?
- Siempre pasa lo mismo en el mismo lugar? (la misma pagina)

El timeout no es... ya que como dices no se cumple los 20min de
inactividad.

Bueno te envio unos enlaces para que mires, por ejemplo:
- ¿Por qué se reinicia mi aplicación ASP.NET?
http://support.microsoft.com/?scid=kb;es;871042

- Las variables de sesión (modo inProc) se pierden
intermitentemente.
- Se pierden las variables de estado de aplicación.
- Se pierden los datos de caché.
- Parece que el evento Application Start y el evento Application
End se inician inesperadamente

Con lo que respecta al primer punto, cuando las vbles de session se
almacenan en modo INPROC (que es la configuracion por defecto) se
guardan en el mismo proceso que esta corriendo tu applicacion web, y si
falta memoria en el servidor todo lo que esta inProc se puede eliminar
para dejar un poco de "lugar"...
Te recomendaria que coloques tus sessiones pro ejemplo en un servidor
de session o incluso dentro de un sqlserver, para que no tengas
problemas cuando estes modificando archivos.
Pero para empezar podrias guarda en el mismo servidor o sea deberas
configurar esa maquina com oservidor en modo StateServer el
sessionState (tambien esta en los enlaces mas abajo)

--------------------------------
POST ANTERIOR
--------------------------------
Si puede ser que las variables de session las pierdas... porque si
falta memoria en el servidor todo lo que esta inProc se puede eliminar
para dejar un poco de "lugar"... basicamente estan en el mismo PROCESO
y este proceso tiene la particularidad que se RECICLA.
Te recomendaria que coloques tus sesiones por ejemplo en un servidor de
session o incluso dentro de un sqlserver, para que no tenga problemas
cuando estes modificando archivos, o para que no se pierdan las
variables

Para probar coloca en el modo StateServer en el mismo servidor y alli
no se "perderan" de repente sino cuando deben... mas abajo coloco unos
enlaces de este procedimiento
Aqui tambien unas cosillas mas de un post anterior de la misma
tematica.

Bueno la session donde la guardas???
----------------------------------------
ASP.NET admite tres modos de estado de sesión: (vaa 4 con Custom)
- InProc
- StateServer:
- SqlServer:
- Custom

Aqui estan:
- InProc: el modo en proceso almacena valores en la memoria del
proceso de trabajo de ASP.NET. Este modo ofrece el acceso más rápido
a estos valores. Sin embargo, cuando el proceso de trabajo de ASP.NET
se recicla se pierden los datos de estado.
- StateServer: Como alternativa, el modo StateServer utiliza un
servicio independiente de Microsoft Windows para almacenar variables de
sesión. Como este servicio es independiente de Microsoft Internet
Information Server (IIS), puede ejecutarse en un servidor diferente.
Puede utilizar este modo en una solución de equilibrio de carga, ya
que varios servidores Web pueden compartir variables de sesión. Aunque
las variables de sesión no se pierden si reinicia IIS, el rendimiento
se ve afectado cuando atraviesa los límites de proceso.
- SqlServer: si le preocupa la persistencia de la información de
sesión, puede utilizar el modo SqlServer para utilizar Microsoft SQL
Server y asegurar así el máximo nivel de confiabilidad. El modo
SqlServer es similar al modo fuera de proceso, excepto en que los datos
de sesión se mantienen en SQL Server. El modo SqlServer también le
permite utilizar un almacén de estados ubicado fuera del proceso de
IIS y que puede residir en el equipo local o en un servidor remoto.
- Existe un modo Custom, donde debes indicarle donde se guardaran
las sessiones (nunca lo probe por eso no te puedo comentar muy bien)
Donde se configura: en el web.config (como toda configuracion) je!

Y cuando se reinicia?
----------------------
Dice que se reinicia cuando:
- si se recicla el AppDomain,
- o el proceso Aspnet wp.exe (o el proceso W3wp.exe)

Cuando?
- Varios atributos (por ejemplo el atributo memoryLimit) tienen
configuraciones particulares en la sección <processModel> del archivo
de configuración.
(aqui vale la pena aclarar que este cambio no surge efecto directamente
como lo demas atributos del webconfig sino cuando se reinicia el
proceso de trabajo)
Se lo puede cambiar tambien desde interfaz grafico desde el grupo de
aplicacciones desde la consola del IIS. pero creo que esto es para
todas las webs del grupo de app pero no se cual tiene mas prioridad
creo yo que el webconfig como todo.
memoryLimit: Especifica, como porcentaje de la memoria total del
sistema, el espacio de memoria máximo que el proceso de trabajo puede
consumir antes de que ASP.NET inicie un nuevo proceso y reasigne las
solicitudes pendientes. El valor predeterminado es 60.

- Se modificaron el Global.asax o el archivo Web.config.
- Se modificó el directorio Bin de la aplicación Web.
- La detección de virus de software tocó alguna información
adicional en archivos de configuracion .config.

El modo de sesión InProc indica que se almacena estado de la sesión
localmente.
Esto significa que con sesión InProc, se almacena realmente el modo de
estado en objetos de vida en el AppDomain de la aplicación Web. Se
debe esto a cuando se pierde al estado de sesión Aspnet wp.exe (o
W3wp.exe para aplicaciones que se ejecutan en Servicios de Internet
Information Server [IIS 6,0]) o se reinicia el AppDomain.

Todo eso esta en este KB
http://support.microsoft.com/?scid=kb;es;324772

INFO: Introducción a la administración de estados de ASP.NET
http://support.microsoft.com/kb/307598/es

Configuración de la agrupación de aplicaciones de reciclaje
-------------------------------------------------------------------------
Reciclar la configuración del grupo de aplicaciones:
La configuración de la agrupación de aplicaciones de reciclaje
permiten controlar el modo de recuperación de los recursos del sistema

http://msdn2.microsoft.com/es-es/library/1dtw20e3.aspx

Process Model - Propiedades
http://msdn2.microsoft.com/es-es/library/yk0c93w4.aspx

ProcessModelSection (Clase)
La clase ProcessModelSection controla los distintos aspectos del
proceso de trabajo de ASP.NET, incluidos el período de duración, el
número de instancias creadas a la vez, bajo qué identidad de
seguridad se ejecuta y el tamaño del grupo de subprocesos de CLR que
se ocupa de las solicitudes.
http://msdn2.microsoft.com/es-es/library/system.web.configuration.processmodelsection(VS.80).aspx
Enlaces:
-------------------
Modos de estado de sesión
http://msdn2.microsoft.com/es-es/library/ms178586.aspx

Elemento sessionState (Esquema de configuración de ASP.NET)
http://msdn2.microsoft.com/es-es/library/h6bb9cz9.aspx

¿Por qué se reinicia mi aplicación ASP.NET?
http://support.microsoft.com/?scid=kb;es;871042

PRB: Datos de sesión se pierden cuando utiliza modo InProc de ASP.NET
de estado de sesión
http://support.microsoft.com/kb/324772/es

PRB: Las variables de sesión se pierden intermitentemente en
aplicaciones ASP.NET
http://support.microsoft.com/kb/316148/es

CÓMO PARA: Configura SQL Server a Store ASP.NET Session State
http://support.microsoft.com/kb/317604/

otro post
http://groups.google.com.ar/group/microsoft.public.es.dotnet.aspnet/msg/d0e5ed1238f28084

Espero que te sirva de ayuda o guia
_______________________
Jose A.. Fernandez


gjaume ha escrito:

the4man

unread,
Jan 2, 2007, 11:01:25 AM1/2/07
to
¿No será que lo que está expirando es el token de autenticación? No
sólo debes aumentar el tiempo de sesión, tambien debes aumentar el
tiempo de vida del token de autenticación. Añade esto al web.confi

<system.web>
<authentication mode="Forms">
<forms timeout="480"/>
</authentication>
</system.web>

o

<system.web>
<authentication mode="Windows">
<forms timeout="480"/>
</authentication>
</system.web>

Segun uses un tipo de autenticación u otro.

gjaume ha escrito:

Jose A. Fernandez

unread,
Jan 2, 2007, 12:20:19 PM1/2/07
to
Si .. tienes razon the4man , puede ser que entendi mal y que lo que nos
quiere decir "gjaume" es lo que estas comentando...
Pero mi opinion que es establecer los parametros adecuados para que
funcione todo como esta planificando "gjaume", si ponemos en el
SessionState Timeout n valor muy grande.. es el tiempo de espera entre
solicitudes es decir 8 horas entre un postback y el proximo...mm no se
porque no me gusta pero bueno
Y el Authentication Timeout sigue corriendo no importa los postback asi
que alli si podria ser 480...
Pero si quiere que sean 8 horas diarias porque solamente no mira la
hora del servidor y luego de las 20 8 21 por ejemplo no permite ningun
logeo?? es una idea simplemente

Un abrazo

Tambien escribo un post anterior
------------------------------------------------------------------
Teoria de Timeouts:
Authentication Timeout: Intervalo de tiempo en minutos tras el cual
caduca la autenticación. El valor predeterminado es de 30 minutos.
O sea el periodo de inactividad que el usuario puede realizar hasta que

se le presente la pagina de login nuevamente.
SessionState Timeout: Obtiene y establece el tiempo de espera (en
minutos) que se permite entre solicitudes antes de que el proveedor de
estado de sesión termine la sesión.
Cuanto tiempo se debe mantener el estado de la session.


Que puede pasar que el SessionState Timeout sea menor que el
Authentication Timeout, o sea la session se puede perder pero el
usuario sigue autenticado (o sea no se pregunta por el login).. esto
sucede cuando la session esta en modo InProc y "se pierden" algunos los

valores de session (porque se "limpia" el proceso donde se esta
ejecutando juanto con las variables) pero el usaurio sigue autenticado.


______________________
Jose A. Fernandez


the4man ha escrito:

gjaume

unread,
Jan 2, 2007, 4:49:26 PM1/2/07
to
En primer lugar muchísimas gracias a ambos, eran 2 conceptos que no
tenia claros y me habeis ayudado mucho.

Ahora ya funciona correctamente!

Muchas gracias de nuevo!

--------------------------------------------------------

Jose A. Fernandez ha escrito:

Valdivia@discussions.microsoft.com Martin Valdivia

unread,
Jan 15, 2007, 5:08:00 PM1/15/07
to
Que tal, tengo conocimimentos de programacion, en asp .net, tengo le mismo
problema que tu, necesito aumentar el tiempo de expiración de mis sessiones,
pero en realidad no entiendo mucho lo que dicen en este post, si pudieras
explicarme un poco mas detallado y simple te agradeceria mucho.

mail: martin_...@hotmail.com
mail laboral: mval...@isp.qnet.com.pe

Atte
Martín Alexis Valdivia Símiche
Desarrollo - Qnet Soluciones Tecnológicas
Jr. Natalio Sánchez 220, Of. 401 - Lima 11
Telf.: (511) 431-6565 Anexo 2204
Fax: (511) 431-7113
Visítenos en: www.qnet.com.pe

0 new messages