Tengo una aplicacion web en asp.net 2.0 y uso variables de session
para controlar la seguridad, hasta aqui todo perfecto.
Una parte de la aplicación, en concreto una carpeta, se la pasé a un
compañero y cuando terminó unificamos versiones, bueno lo típico en un
proyecto.
Cual fue mi sorpresa que al ponerle la funcion de control de usuarios
en la cabecera del Page_load cuando me dice que no puede mostrar la
página porque es necesario un inicio de session, en concreto mi
session("IdUsuario").
Pero peor aun fue cuando probando ejecute mi sitio web con el play del
visual 2005 y puse como página de inicio la página de los problemas de
la session ... y claro como Murphie es malvado funcionó perfectamente,
es decir que el visual me llena la variable de session que debería de
estar llenarse en mi ventana de login.
En resumen que me estoy volviendo loco y que no se que hacer porque
claro al cliente no le puedo poner un boton de play del 2005 XDDDD. Si
alguien me puede ayudar indicandome porque pierde session mi carpeta
se lo agradecería muchísmo
Muchas Gracias y un saludo
Post anteriores
-----------------------------------
- Variables de Session
http://groups.google.com/group/microsoft.public.es.dotnet.aspnet/browse_thread/thread/c2b36f8bb5a2f952/
- Como se cuando murio la session?
http://groups.google.com/group/microsoft.public.es.dotnet.aspnet/browse_thread/thread/2d01f41141bf59b8/
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
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!
La AppWeb 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/
Espero que te sirva de ayuda o guia
________________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja